NameError: 全局名 'imshow' 未定义,但已导入Matplotlib

1 投票
1 回答
21533 浏览
提问于 2025-04-28 16:36

我现在正在写一个Python脚本,这个脚本用来绘制一个包含一些数据的numpy矩阵(计算这些数据我没有遇到任何困难)。由于一些复杂的原因,跟我创建这些数据的方式有关,我必须通过终端来操作。我在Spyder中用imshow()做过很多类似的事情,所以我想在终端中试试同样的操作。以下是我的代码:

      from numpy import *
      from matplotlib import *

      def make_picture():
          f = open("DATA2.txt")
          arr = zeros((200, 200))
          l = f.readlines()
          for i in l:
              j = i[:-1]
              k = j.split(" ")
              arr[int(k[0])][int(k[1])] = float(k[2])
          f.close()
          imshow(arr)

      make_picture()

可以说,数组的部分运行得很好。我测试过,它能完美地提取数据。所以,我在内存中有一个200乘200的数字数组,我想把它显示出来。当我在Spyder中运行这段代码时,得到了我预期的结果。然而,当我在终端中运行这段代码时,却出现了一个错误信息:

      Traceback (most recent call last):
        File "DATAmine.py", line 15, in <module>
          make_picture()
        File "DATAmine.py", line 13, in make_picture
          imshow(arr)
      NameError: global name 'imshow' is not defined

(我的程序叫DATAmine.py)这是怎么回事呢?我是不是应该导入其他东西?我知道我需要配置Spyder的路径,所以我在想我是否没有访问这些路径的权限。任何建议都非常感谢。谢谢!

附言:也许我应该提一下,我使用的是Ubuntu。不知道这是否相关。

暂无标签

1 个回答

1

为了让你的生活更简单,你可以使用

from pylab import *

这段代码会导入整个pylab包,里面包含了matplotlib和numpy这两个库。

祝好!

撰写回答