尽管我调用pyplot.show(),但matplotlib不会显示我的绘图


173

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

$ ipython --pylab

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

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

p.show()

没事了 没有错误讯息。没有新窗口。没有。我matplotlib使用pip进行安装,但未收到任何错误消息。

细节:

我用,

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

Answers:


177

如果将后端设置为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']

参考:


2
我尝试过,但遇到类似以下错误:ImportError: No module named _backend_gdk
Baskaya

6
抱歉,有很多评论。有用。我尝试了Qt4Agg并点击了。谢谢:) ..最后,在哪里可以找到默认的matplotlibrc或有什么方法可以创建它?
Baskaya

很抱歉。我想我找到了
Baskaya

8
这个答案很旧,现在应该在config中~/.config/matplotlib/matplotlibrc(至少对于python 3)。我只是遇到了一个相关的问题,我认为这是由于在python 2.7中使用了matplotlib所致,后者创建了一个~/.matplotlib/目录,并阻止了python 3读取中的配置~/.config/matplotlib/。删除~/.matplotlib/为我解决了这个问题。
naught101

5
6年后,这个问题仍然存在...现在,我记得为什么讨厌Python:每行代码都有问题。
pookie

70

我在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之类的软件。那很好。当然,这意味着您只能安装到您的系统目录中,没有virtualenv的好处,并且您受困于Ubuntu发行的版本,这可能落后于当前版本...


2
您的答案是BIT长,您可以考虑缩短OP。
theJollySin 2012年

5
您是否尝试过该--system-site-packages选项?
Tianyang Li 2013年

1
%Christopher Lee数字无法显示而没有任何错误/其他投诉的问题是因为您pip install是时的默认后端agg。我不确定为什么,但是您可以根据unutbu的答案进行更改。pip具有安装最新版本的主要优点- apt安装过时的版本。有时,您需要/需要一些错误修复/新功能。
drevicko

2
只是停用virtualenv工作!而且我能够从系统范围的源代码(在Ubuntu上)安装matplotlib 1.4,但不能在之下virtualenv
osa

1
对于那些困在无法使用apt-get的Windows工作机上的人来说,什么解决方案呢?
ale19

33

%matplotlib内联

对于使用笔记本的我来说,在绘图工作之前添加以上行。


%pylab inline如@Bhanu Pratap Singh所述,我需要在笔记本上使用
Reed Sandberg,

10

备查,

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

c.InteractiveShellApp.pylab = 'auto'

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


5
或使用“ ipython --pylab = qt”
andrew

这将起作用,但仅是部分解决方案:如果您的默认后端是agg,那么我认为这%pylab inline将不起作用,当您直接运行脚本时,也不会显示图:即python myscript.py。unutbu的答案应该可以在任何地方修复它。
drevicko



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所说,通过更改后端,我遇到了很多问题,所有不同的后端都不起作用。


1
工作了,只使用了git clone和python设置步骤,但是当我使用plt.show()运行它时没有问题。
史蒂夫(Steve)

2

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

import matplotlib
matplotlib.use("gtk")

import sys
import pylab
import numpy as np

0

确保启用此启动脚本:(“首选项”>“控制台”>“高级选项”)

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

如果启用了标准的PYTHONSTARTUP,则不会有交互式绘图


0

类似@Rikki,我通过升级解决了这个问题matplotlibpip install matplotlib --upgrade。如果无法升级,则可以卸载并重新安装。

pip uninstall matplotlib
pip install matplotlib

0

对我来说,如果我只是在macOS 下创建一个 matplotlibrc文件,就会发生问题~/.matplotlib。在其中添加“后端:macosx”可解决此问题。

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



0

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


您能补充一点解释吗?您的解决方案与其他解决方案有何不同?
拉尔夫·斯塔布纳

-2

对于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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.