linux 如何设置matplotlib的“后端”?

woobm2wo  于 2023-06-21  发布在  Linux
关注(0)|答案(8)|浏览(124)

我是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,但它不工作。
  • 我尝试使用后端的其他参数,如'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
qco9c6ql

qco9c6ql1#

您当前选择的后端“agg”不支持show()。
AGG后端用于写入文件,而不是在窗口中渲染。请参阅matplotlib网站上的后端FAQ。
ImportError:没有名为_backend_gdk的模块
对于第二个错误,可能你的matplotlib发行版没有编译GTK支持,或者你错过了PyGTK包。尝试安装它。
您是否在可以访问图形环境的终端或应用程序中调用show()方法?
尝试其他GUI后端,按以下顺序:

  • TkAgg
  • wxAgg
  • Qt5Agg
  • Qt4Agg
eqoofvh9

eqoofvh92#

仅供参考,我发现我需要在Python导入顺序中将matplotlib.use('Agg')放在第一位。对于我正在做的事情(单元测试需要无头),这意味着

import matplotlib
matplotlib.use('Agg')

在我的主测试脚本的顶部。我不需要动任何其他文件。

mwkjh3gx

mwkjh3gx3#

这也可以在配置文件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

这样,如果代码与其他人共享,后端就不需要硬编码。有关详细信息,请查看文档。

hfsqlsce

hfsqlsce4#

您发布的错误与此无关。第一个是由于您选择了一个不用于交互式使用的后端,即你仍然可以使用(并且应该使用)那些在脚本中生成不需要用户交互的图。
如果你想要一个交互式的实验室环境,比如在Matlab/Pylab中,你显然需要导入一个支持gui使用的后端,比如Qt 4Agg(需要Qt和AGG),GTKAgg(GTK和AGG)或WXAgg(wxWidgets和Agg)。
我会从尝试使用WXAgg开始,除此之外,它真的取决于你如何安装Python和matplotlib(源代码,包等)。

3b6akqbq

3b6akqbq5#

在启动python之前,可以在bash中做

export MPLBACKEND=TkAgg
v8wbuo2f

v8wbuo2f6#

您也可以尝试在浏览器中查看图形。
使用以下内容:

matplotlib.use('WebAgg')
4zcjmb1e

4zcjmb1e7#

对于新来者,

matplotlib.pyplot.switch_backend(newbackend)
hts6caw3

hts6caw38#

我在自己的VIRTUAL_ENV中编译python、numpy、scipy、matplotlib时碰到了这个问题
在安装matplotlib之前,你需要编译并安装:pygobject pycairo pygtk
然后使用matplotlib:在构建matplotlib之前,请使用'python ./setup.py build --help'检查是否启用了'gtkagg'后端。然后构建和安装
导出前PKG_CONFIG_PATH=$VIRTUAL_ENV/lib/pkgconfig

相关问题