【问题标题】:Why matplotlib does not plot?为什么 matplotlib 不绘图?
【发布时间】:2013-01-11 14:28:27
【问题描述】:

我开始使用this 初学者教程学习 MatPlotLib。这是第一个例子。

from pylab import *
X = np.linspace(-np.pi, np.pi, 256,endpoint=True)
C,S = np.cos(X), np.sin(X)

如果我将这 3 行写入我的 python 文件并在命令行中执行它(通过输入python file_name.py),什么也不会发生。没有错误信息,没有情节。

有人知道我为什么看不到剧情吗?

添加

当然我需要使用show。但即使我添加以下 3 行:

plot(X,C)
plot(X,S)
show()

它仍然没有生成任何东西。

添加

以下是我现在使用的行:

import pylab as p
C = [1,2,3,4]
S = [10, 20, 30, 10]
p.plot(C,S)
p.show()

我仍然有相同的结果(什么都没有)。

【问题讨论】:

  • 你不必在最后使用 show() 显示它吗?
  • @Roman 你在使用 Ubuntu 12.10 吗?对我来说,一切都在 ubuntu 12.04 上运行,但是一旦我转移到 12.10 一切,情节就停止了。至少在我的情况下,我假设它是与发行版相关的问题。 savefig(filename) 仍然有效。
  • @Shashank Singh,不,我使用 12.04。
  • 导入 matplotlib.pyplot 作为 plt 然后 plt.show() ?
  • @Dan,它没有帮助。我还是没有结果。

标签: python matplotlib


【解决方案1】:

这可能是后端的问题。 什么是输出 python -c 'import matplotlib; import matplotlib.pyplot; print(matplotlib.backends.backend)'?

如果它是“agg”后端,您看到的是预期的行为,因为它是一个非交互式后端,不会在屏幕上显示任何内容,但可以使用 plt.savefig(...)。 您应该切换到例如 TkAgg 或 Qt4Agg 才能使用show。您可以在 matplotlib.rc 文件中执行此操作。

@shashank:我在 12.04 和 12.10 都运行 matplotlib 没有问题。在这两种情况下,我都使用 Qt4Agg 后端。如果您没有设置 matplotlibrc,则使用默认后端。 我确信对于 Precise matplotlib repo 是用 TkAgg 构建的。如果 Quantal 版本是用例如构建的Agg,那么这就解释了差异

【讨论】:

  • 感谢您的回答。现在我使用plt.savefig('name.png')os.system('eog name.png &') 得到我需要的东西。老实说,我不知道“'agg'后端”是什么意思,但现在我拥有了我需要的一切(工作解决方案)。谢谢。
  • here 你可以找到关于后端是什么的解释(第 1.3 节)。当您有一个内置机制来显示该图时,您的解决方案看起来过于复杂。查看this page 以了解 matplotlibrc 及其工作原理。最好的选择是将其转储到 ~/.matplotlib/ 并使用后端,直到您无法使 show 工作(这是 matplotlibrc 文件中的第一个条目)。
  • 您可以通过运行找到 matplotlibrc 文件的位置:import matplotlib matplotlib.matplotlib_fname() 在此处查看更多信息:matplotlib.org/users/customizing.html
  • 使用 14.04 Ubuntu 能够使用 Qt4Agg 解决问题。
  • 为什么不在开头使用 matplotlib.use('Agg') 呢?
【解决方案2】:

你需要调用函数:

show()

更准确地说:

pylab.show()

最好不要使用:

from pylab import *

宁可这样做:

import pylab as p:

然后:

X = np.linspace(-np.pi, np.pi, 256,endpoint=True)
C,S = np.cos(X), np.sin(X)

p.plot(C,S)
p.show()

【讨论】:

  • 抱歉我的问题不完整(我已经编辑过了)。即使我使用show,它也不会产生任何东西。
【解决方案3】:

尝试添加。我使用 Jupyter,这对我有用。

  %matplotlib inline

【讨论】:

    猜你喜欢
    • 2012-02-15
    • 2016-04-18
    • 1970-01-01
    • 1970-01-01
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多