matplotlib中没有绘图窗口


89

我刚刚使用突触软件包系统在Ubuntu 9.10中安装了matplotlib。但是,当我尝试以下简单示例时

>>> from pylab import plot;
>>> plot([1,2,3],[1,2,3])
[<matplotlib.lines.Line2D object at 0x9aa78ec>]

我没有绘图窗口。关于如何显示绘图窗口的任何想法?


8
pylab默认不显示绘图,因为绘图和不断更新可能很昂贵。您需要做一个明确的show()
Alok Singhal 2010年

1
:在这个问题上的一些官方文档matplotlib.org/faq/...
stephenbez

Answers:


138

您可以输入

import pylab
pylab.show()

或更好,请使用ipython -pylab


由于pylab 不再建议使用,因此如今的解决方案是

import matplotlib.pyplot as plt

plt.plot([1,2,3])

plt.show()

38

pylab.show() 可以但是会阻塞(您需要关闭窗口)。

一个更方便的解决方案是pylab.ion()在启动时执行(启用交互模式):所有(pylab的等效pyplot.*命令)立即显示其图。可以在官方网站上找到有关交互模式的更多信息

我还使用了更方便的功能ipython -pylab--pylab在较新的版本中),它使您可以跳过该from … import …部分(%pylab在较新的IPython版本中也可以使用)。


1
但是您需要先打电话pylab.show()才能打开一个数字。
史蒂夫·乔阿

3
@Steve:我的经验是,这在很大程度上取决于后端。在具有常规Python Shell的Mac OS X上,我不必执行show()(或为此而执行draw()):plot()打开一个新窗口。
Eric O Lebigot 2010年

1
啊好吧。好点子。我只有在Linux中使用ipython的经验。
史蒂夫·乔阿

draw()对我不起作用,但是pylab.ion()有效。我正在使用
OSx

使用最新的Matplotlib在Python shell中也是如此。我更新了答案,谢谢。
Eric O Lebigot


11

以下代码段可在Eclipse和Python Shell上使用:

import numpy as np
import matplotlib.pyplot as plt

# Come up with x and y
x = np.arange(0, 5, 0.1)
y = np.sin(x)

# Just print x and y for fun
print x
print y

# Plot the x and y and you are supposed to see a sine curve
plt.plot(x, y)

# Without the line below, the figure won't show
plt.show()

正如许多其他答案所阐明的那样,目前这可能对您有用,但这完全取决于您的matplotlib后端配置方式。
nealmcb 2014年

9

是否显示任何错误?这可能是没有设置后端的问题。您可以从Python解释器或.matplotlib/matplotlibrc主目录中的配置文件()进行设置。

要在代码中设置后端,您可以执行

import matplotlib
matplotlib.use('Agg')

其中“ Agg”是后端的名称。存在哪些后端取决于您的安装和操作系统。

http://matplotlib.sourceforge.net/faq/installing_faq.html#backends

http://matplotlib.org/users/customizing.html


1
完全可以,谢谢。要明确的是,最简单的操作(当然,一旦您知道这是可行的),就是将后端设置.matplotlib/matplotlibrcbackend: Agg。然后,您不必use每次都明确地指定一个:)
dsummersl 2014年

2

现代IPython使用--matplotlib带有可选后端参数的“ ”参数。它默认为“自动”,通常在Mac和Windows上已经足够。我尚未在Ubuntu或任何其他Linux发行版上对其进行过测试,但我希望它能正常工作。

ipython --matplotlib

0

如果您遇到以下问题 pylab.show()冻结IPython窗口的问题(这可能是特定于Mac OS X的;不确定),则可以在IPython窗口中使用cmd-c切换到绘图窗口,然后它将中断。

显然,将来对的调用pylab.show()不会冻结IPython窗口,而只会冻结第一个调用。不幸的是,我发现每次重新安装matplotlib时,绘图窗口的行为/与show()的交互都会改变,因此此解决方案可能并不总是有效。


0

如果您使用--pylab选项启动IPython,则无需调用show()draw()。试试这个:

ipython  --pylab=inline

0

--pylab不再为Jupyter,幸好我们可以在添加调整ipython_config.py文件使pylabautoreload功能。

c.InteractiveShellApp.extensions = ['autoreload', 'pylab']
c.InteractiveShellApp.exec_lines = ['%autoreload 2', '%pylab']

0

如果您是Anaconda和Spyder的用户,那么最适合您的解决方案是:

工具->首选项-> Ipython控制台->图形部分

然后在“ 图形支持(Matplotlib)”部分中:

选择两个可用的选项

并在图形后端中

选择自动


-5

使用easy_install时的另一种可能性是,您需要使用最新版本的matplotlib。尝试:

import pkg_resources
pkg_resources.require("matplotlib")

在导入matplotlib或其任何模块之前。


2
这只是确保matplotlib已安装,而不影响窗口处理的完成方式。
塔卡斯韦尔2013年
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.