我把范围缩小到这个电话:
fig.canvas.tostring_argb() #fig=matplotlib.pyplot.figure()
当我将代码作为python脚本运行时,此函数将引发一个AttributeError
。AttributeError: 'FigureCanvasGTKAgg' object has no attribute 'renderer'
但是,如果在ipython --pylab
命令行中运行,此代码将正常工作。
据我从文档中可以看出,Agg呈现器应该可以正常工作。
上下文是,我试图用数字制作一部电影,而不把帧保存到磁盘上;就像this question那样。我使用将像素数组流到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'
发布于 2013-11-19 21:11:57
最后,我安装和使用了WXAgg
后端;Agg
和默认的GTKAgg
对我不起作用。
发布于 2016-02-15 11:08:45
我怀疑你错过了电话:
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()
很管用。
https://stackoverflow.com/questions/20051160
复制相似问题