为什么matplotlib不绘图?
我开始学习MatPlotLib,使用的是这个初学者教程。下面是第一个例子。
from pylab import *
X = np.linspace(-np.pi, np.pi, 256,endpoint=True)
C,S = np.cos(X), np.sin(X)
如果我把这三行代码写进我的Python文件里,然后在命令行中执行(输入python file_name.py
),什么都不会发生。没有错误信息,也没有图表显示。
有没有人知道我为什么看不到图表呢?
补充说明
当然我需要使用show
这个命令。但是即使我加上了以下三行:
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()
结果还是一样(什么都没有)。
3 个回答
6
试着添加一下。我用的是Jupyter,这对我有效。
%matplotlib inline
14
你需要调用这个函数:
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()
54
这可能是后端的问题。你可以运行下面这段代码来查看输出:python -c 'import matplotlib; import matplotlib.pyplot; print(matplotlib.backends.backend)'
。
如果输出是'agg',那么你看到的情况是正常的,因为'agg'是一个非交互式的后端,它不会在屏幕上显示任何东西,但可以用来保存图像,比如使用plt.savefig(...)
。如果你想使用show
来显示图像,你需要切换到比如说TkAgg或Qt4Agg。你可以在matplotlib.rc文件中进行设置。
@shashank: 我在12.04和12.10上运行matplotlib都没有问题。在这两种情况下,我使用的是Qt4Agg后端。如果你没有设置matplotlibrc文件,就会使用默认的后端。我相信在Precise版本中,matplotlib是用TkAgg构建的。如果Quantal版本是用比如说Agg构建的,那就能解释为什么会有不同的表现。