IPython绘图内联没有显示

时间:2013-10-22 21:13:51

标签: matplotlib ipython

我在Linux上运行IPython QT控制台的IPython中有以下代码。

%pylab inline

Welcome to pylab, a matplotlib-based Python environment [backend: module://IPython.zmq.pylab.backend_inline].
For more information, type 'help(pylab)'.

fig = figure()

ax = fig.add_axes()

ax = fig.add_axes([0,500, 0, 5000])

ax.plot([1,2,3,44], [4,4,55,55])
Out[5]: [<matplotlib.lines.Line2D at 0x3d8e7d0>]

fig
Out[6]: <matplotlib.figure.Figure at 0x3d25fd0>

fig.show()
/usr/lib/pymodules/python2.7/matplotlib/figure.py:362: UserWarning: matplotlib is currently using a non-GUI backend, so cannot show the figure
  "matplotlib is currently using a non-GUI backend, "

我一直在努力使这项工作停留一段时间,我尝试使用matplotlib.use()手动将后端更改为Qt4AggGTK等,但没有运气。即使我致电IPython notebook,这也会在display()中发生。

如何让内联绘图工作?


标记雅各布的答案作为答案,但实际上两者都是真的。我不得不用新副本替换matploblibrc文件,使用--pylab = None启动IPython QT控制台,然后在控制台中手动输入%pylab内联。不知怎的,这解决了这个问题。

2 个答案:

答案 0 :(得分:4)

轴对象定义不正确,这会阻止matplotlib渲染 删除第一个ax = fig.add_axes(),并将第二行替换为
ax = fig.add_axes([0, 0, 1, 1])

add_axes方法以 left 坐标的形式请求轴的大小,格式为 left,bottom,width,height ,其值介于0和1之间,请参阅例如matplotlib tutorial

您也可以尝试使用fig.add_subplot(111)代替fig.add_axes()fig,ax = subplots()来创建图形和轴对象。后者假设您已在IPython中填充了交互式命名空间matplotlib(%pylab )调用。

答案 1 :(得分:1)

看起来您的matplotlib构建是在没有gui后端的情况下编译的。

当a)明确指定(对于web服务器很方便)或b)至少一个gui后端所需的库不存在时(例如,没有TkGtkQt等。)

你是如何安装matplotlib的?

如果您从源代码编译它,请确保您至少安装了Tk的开发库,并且您的python安装是使用Tk支持编译的(默认情况下是这样)。如果你从发行版的存储库安装它,那么构建包的人在没有gui支持的情况下构建它,你需要从另一个源安装它。