尽管我打电话给pyplot.show(),matplotlib也没有显示我的图画

时间:2011-09-23 20:27:47

标签: python matplotlib tech-chat-ml

matplotlib需要帮助。是的,我没有忘记调用pyplot.show()。

$ ipython --pylab

import matplotlib.pyplot as p 
p.plot(range(20), range(20))

返回matplotlib.lines.Line2D at 0xade2b2c作为输出。

p.show()

没有任何事情可以发生。没有错误消息。没有新窗口。没有。我使用pip安装matplotlib,但我没有收到任何错误消息。

详细说明:

我用,

  • Ubuntu的
  • IPython v0.11
  • Python v2.6.6
  • matplotlib v1.0.1

13 个答案:

答案 0 :(得分:160)

如果我将后端设置为template中的~/.matplotlib/matplotlibrc, 然后我可以重现你的症状:

〜/ .matplotlib / matplotlibrc:

# backend      : GtkAgg
backend      : template

请注意,文件matplotlibrc可能不在目录~/.matplotlib/中。在这种情况下,以下代码显示它的位置:

>>> import matplotlib
>>> matplotlib.matplotlib_fname()

In [1]: import matplotlib.pyplot as p

In [2]: p.plot(range(20),range(20))
Out[2]: [<matplotlib.lines.Line2D object at 0xa64932c>]

In [3]: p.show()

如果您修改~/.matplotlib/matplotlibrc并将后端更改为GtkAgg,则应该会看到一个情节。您可以使用

列出计算机上可用的所有后端
import matplotlib.rcsetup as rcsetup
print(rcsetup.all_backends)

它应该返回如下列表:

['GTK', 'GTKAgg', 'GTKCairo', 'FltkAgg', 'MacOSX', 'QtAgg', 'Qt4Agg',
'TkAgg', 'WX', 'WXAgg', 'CocoaAgg', 'agg', 'cairo', 'emf', 'gdk', 'pdf',
'ps', 'svg', 'template']

参考:

答案 1 :(得分:65)

我在Ubuntu 12.04遇到了完全相同的问题,因为我使用

安装了matplotlib(在virtualenv中)
pip install matplotlib

长话短说,我的建议是:不要尝试使用pip或手工安装matplotlib;让一个真正的包管理器(例如apt-get / synaptic)为你安装它及其所有依赖项。

不幸的是,matplotlib的后端(用于实际渲染绘图的替代方法)具有pip无法处理的各种依赖性。更糟糕的是,它无声地失败了;也就是说,pip install matplotlib似乎成功安装了matplotlib。但是当您尝试使用它时(例如pyplot.show()),将不会出现任何绘图窗口。我尝试了网上人们建议的所有不同的后端(Qt4Agg,GTK等),并且它们都失败了(即当我尝试导入matplotlib.pyplot时,我得到ImportError,因为它试图导入一些依赖那是缺少的)。然后我研究了如何安装这些依赖项,但它只是让我想放弃使用pip(在virtualenv中)作为任何具有非Python包依赖性的包的可行安装解决方案。

整个体验让我爬回到apt-get / synaptic(即Ubuntu包管理器)来安装像matplotlib这样的软件。这非常有效。当然,这意味着你只能安装到你的系统目录中,没有虚拟的优点,而且你仍然坚持使用Ubuntu分发的版本,这可能落后于当前版本......

答案 2 :(得分:31)

%matplotlib inline

对于我使用笔记本电脑,在情节工作之前添加上面一行。

答案 3 :(得分:9)

供将来参考,

我遇到了同样的问题 - 在ipython下没有显示pylab。通过更改ipython的配置文件{ipython_config.py}来解决此问题。在配置文件

c.InteractiveShellApp.pylab = 'auto'

我将'auto'更改为'qt',现在我看到了图表

答案 4 :(得分:8)

只需输入:

plt.ion()

请在23:30查看https://www.youtube.com/watch?v=1zmV8lZsHF4

由于我的导入,使用了

pltimport matplotlib.pyplot作为plt

我在带有iTerm2的mac上使用python2.7。

答案 5 :(得分:6)

解决了我的问题是在顶部的ipython notebook中使用了以下两行

%matplotib inline
%pylab inline

它有效。我使用的是Ubuntu16.04和ipython-5.1

答案 6 :(得分:2)

我必须从源代码安装matplotlib才能使其正常工作。关键指令(来自http://www.pyimagesearch.com/2015/08/24/resolved-matplotlib-figures-not-showing-up-or-displaying/)是:

$ workon plotting
$ pip uninstall matplotlib
$ git clone https://github.com/matplotlib/matplotlib.git
$ cd matplotlib
$ python setup.py install

通过更改后端,正如@unutbu所说,我遇到了更多问题,所有不同的后端都没有工作。

答案 7 :(得分:2)

在导入pylab之前添加以下两行似乎对我有用

import matplotlib
matplotlib.use("gtk")

import sys
import pylab
import numpy as np

答案 8 :(得分:0)

确保启用此启动脚本: (首选项&gt;控制台&gt;高级选项)

/usr/lib/python2.7/dist-packages/spyderlib/scientific_startup.py

如果启用标准PYTHONSTARTUP,您将没有交互式情节

答案 9 :(得分:0)

运行代码后包括:

import pylab as p
p.show()

答案 10 :(得分:0)

我发现我需要先window = Tk(),然后再window.mainloop()

答案 11 :(得分:-1)

对于Ubuntu 12.04:

sudo apt-get install python-qt4
virtualenv .env --no-site-packages
source .env/bin/activate
easy_install -U distribute
ln -s /usr/lib/python2.7/dist-packages/PyQt4 .
ln -s /usr/lib/python2.7/dist-packages/sip.so .
pip install matplotlib

答案 12 :(得分:-1)

对我来说,如果我只是在macOS上的matplotlibrc下创建一个 ~/.matplotlib文件,就会出现问题。在其中添加“backend:macosx”可以解决问题。

我认为这是一个错误:如果我的backend中未指定matplotlibrc,则应采用默认值。