我已经缩小到这个电话了:
fig.canvas.tostring_argb() #fig=matplotlib.pyplot.figure()
当我将代码作为python脚本运行时,此函数引发AttributeError
。
AttributeError: 'FigureCanvasGTKAgg' object has no attribute 'renderer'
但是,如果在ipython --pylab
命令行中运行,此代码可以正常工作。
据我在文档中可以看出,Agg渲染器应该可以正常工作。
上下文是我试图从数字制作电影,而不保存帧
到磁盘;根据{{3}}。我正在使用流式传输像素阵列的方法
为了做到这一点ffmpeg
(作为一个单独的进程运行),我需要框架中的argb
数组值。
我是否可以通过一些配置设置让matplotlib在脚本中正常工作?
修改的
根据评论尝试use('Agg')
;仍然失败;这是一个极小的工作示例。
[dave@dave tools]$ python -c "import matplotlib; matplotlib.use('Agg'); import matplotlib.pyplot; fig=matplotlib.pyplot.figure(); fig.canvas.tostring_argb()"
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib64/python2.7/site-packages/matplotlib/backends/backend_agg.py", line 416, in tostring_argb
return self.renderer.tostring_argb()
AttributeError: FigureCanvasAgg instance has no attribute 'renderer'
答案 0 :(得分:13)
我怀疑你错过了致电:
fig.canvas.draw()
前
fig.canvas.tostring_argb()
作为
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot
fig=matplotlib.pyplot.figure()
fig.canvas.tostring_argb()
对我失败了,但是
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot
fig=matplotlib.pyplot.figure()
fig.canvas.draw()
fig.canvas.tostring_argb()
作品。
答案 1 :(得分:2)
我最终安装并使用了WXAgg
后端; Agg
和默认GTKAgg
对我不起作用。