我在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()
手动将后端更改为Qt4Agg
,GTK
等,但没有运气。即使我致电IPython notebook
,这也会在display()
中发生。
如何让内联绘图工作?
标记雅各布的答案作为答案,但实际上两者都是真的。我不得不用新副本替换matploblibrc文件,使用--pylab = None启动IPython QT控制台,然后在控制台中手动输入%pylab内联。不知怎的,这解决了这个问题。
答案 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后端所需的库不存在时(例如,没有Tk
,Gtk
, Qt
等。)
你是如何安装matplotlib的?
如果您从源代码编译它,请确保您至少安装了Tk的开发库,并且您的python安装是使用Tk支持编译的(默认情况下是这样)。如果你从发行版的存储库安装它,那么构建包的人在没有gui支持的情况下构建它,你需要从另一个源安装它。