我是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()))
apt-get install libagg
,但它不起作用。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
答案 0 :(得分:72)
您当前选择的后端'agg'不支持show()。
AGG
后端用于写入文件,而不是用于在窗口中呈现。请参阅matplotlib网站上的backend FAQ。
ImportError:没有名为_backend_gdk的模块
对于第二个错误,也许你的matplotlib发行版没有使用GTK支持编译,或者你错过了PyGTK包。尝试安装它。
您是否在有权访问图形环境的终端或应用程序中调用show()
方法?
按此顺序尝试其他GUI后端:
TkAgg
WX
QTAgg
QT4Agg
答案 1 :(得分:18)
仅供参考,我发现我需要先将matplotlib.use('Agg')
放在Python导入顺序中。对于我正在做的事情(单元测试需要无头),这意味着放置
import matplotlib
matplotlib.use('Agg')
位于我的主测试脚本的顶部。我没有触及任何其他文件。
答案 2 :(得分:18)
这也可以在配置文件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
这样,如果代码与其他人共享,则后端不需要硬编码。 有关详细信息,请查看documentation。
答案 3 :(得分:7)
您发布的错误无关。第一个是由于您选择了不适合交互使用的后端,即agg。您仍然可以使用(并且应该使用)那些用于在不需要用户交互的脚本中生成绘图。
如果你想要一个交互式实验室环境,就像在Matlab / Pylab中一样,你显然会导入支持gui用法的后端,例如Qt4Agg(需要Qt和AGG),GTKAgg(GTK和AGG)或WXAgg(wxWidgets和AGG)。
我首先尝试使用WXAgg,除此之外,它实际上取决于你如何安装Python和matplotlib(源代码,包等)。
答案 4 :(得分:2)
我试图在我自己的VIRTUAL_ENV中编译python,numpy,scipy,matplotlib时遇到了这个
在安装matplotlib之前,您必须构建并安装: pygobject pycairo pygtk的
然后用matplotlib做: 在使用'python ./setup.py build --help'构建matplotlib之前,如果启用了'gtkagg'后端。然后构建并安装
导出前PKG_CONFIG_PATH = $ VIRTUAL_ENV / lib / pkgconfig
答案 5 :(得分:2)
对于新来者,
matplotlib.pyplot.switch_backend(newbackend)
答案 6 :(得分:1)
在启动python之前,您可以在bash中完成
export MPLBACKEND=TkAgg
答案 7 :(得分:0)
您也可以尝试在浏览器中查看图形。
使用以下内容:
matplotlib.use('WebAgg')