如何设置matplotlib的'backend'?
我刚开始使用matplotlib,系统是Ubuntu 10.04,Python版本是2.6.5。
这是我的代码:
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
plt.plot([1,2,3])
出现的错误是:
/usr/local/lib/python2.6/dist-packages/matplotlib/backends/__init__.py:41: UserWarning:
Your currently selected backend, 'agg' does not support show().
Please select a GUI backend in your matplotlibrc file ('/usr/local/lib/python2.6/dist-packages/matplotlib/mpl-data/matplotlibrc')
or with matplotlib.use()
(backend, matplotlib.matplotlib_fname()))
- 我安装了Anti-Grain Geometry库,命令是
apt-get install libagg
,但是还是不行。 - 我尝试使用其他后端参数,比如'GTK'和'TkAgg'。
- 我安装了
python-gtk2-dev
包,但错误依然存在。 - 有没有人能告诉我一个可以用的后端参数和它需要的依赖库?
这里是错误信息:
>>> matplotlib.use('GTK')
>>> import matplotlib.pyplot as plt
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.6/dist-packages/matplotlib/pyplot.py", line 95, in <module>
new_figure_manager, draw_if_interactive, show = pylab_setup()
File "/usr/local/lib/python2.6/dist-packages/matplotlib/backends/__init__.py", line 25, in pylab_setup
globals(),locals(),[backend_name])
File "/usr/local/lib/python2.6/dist-packages/matplotlib/backends/backend_gtk.py", line 28, in <module>
from matplotlib.backends.backend_gdk import RendererGDK, FigureCanvasGDK
File "/usr/local/lib/python2.6/dist-packages/matplotlib/backends/backend_gdk.py", line 29, in <module>
from matplotlib.backends._backend_gdk import pixbuf_get_pixels_array
ImportError: No module named _backend_gdk
8 个回答
21
这个设置也可以在配置文件 matplotlibrc
中进行(就像错误信息里提到的那样),比如:
# The default backend; one of GTK GTKAgg GTKCairo GTK3Agg GTK3Cairo
# CocoaAgg MacOSX Qt4Agg Qt5Agg TkAgg WX WXAgg Agg Cairo GDK PS PDF SVG
backend : Agg
这样的话,如果代码要分享给其他人,就不需要把后端写死在代码里了。想了解更多信息,可以查看 文档。
42
顺便说一下,我发现我需要在Python的导入顺序中先写上 matplotlib.use('Agg')
。因为我在做的事情(单元测试需要在没有界面的情况下进行),所以我需要把
import matplotlib
matplotlib.use('Agg')
放在我的主测试脚本的最上面。我不需要修改其他任何文件。
120
你当前选择的后端 'agg' 不支持 show() 方法。
AGG
后端是用来写文件的,不是用来在窗口中显示的。想了解更多,可以查看 matplotlib 网站上的后端常见问题。
导入错误:没有名为 _backend_gdk 的模块
对于第二个错误,可能是你的 matplotlib 版本没有编译支持 GTK,或者你缺少 PyGTK 包。试着安装一下。
你是在一个可以访问图形界面的终端或应用程序中调用 show()
方法吗?
可以尝试其他图形用户界面的 后端,建议按以下顺序尝试:
TkAgg
wxAgg
Qt5Agg
Qt4Agg