Как мне установить 'backend' в matplotlib в Python?

Я новый пользователь 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

6 ответов

Решение

Ваш текущий выбранный бэкэнд 'agg' не поддерживает show ().

AGG backend для записи в файл, а не для рендеринга в окне. Смотрите FAQ по бэкенду на веб-сайте matplotlib.

Ошибка импорта: нет модуля с именем _backend_gdk

Что касается второй ошибки, возможно, ваш дистрибутив matplotlib не скомпилирован с поддержкой GTK, или вы пропустили пакет PyGTK. Попробуйте установить его.

Вы называете show() метод внутри терминала или приложения, которое имеет доступ к графической среде?

Попробуйте другие интерфейсы GUI в следующем порядке:

  • TkAgg
  • WX
  • QTAgg
  • QT4Agg

К вашему сведению, мне нужно было поставить matplotlib.use('Agg') первый в порядке импорта Python. Для того, что я делал (модульное тестирование должно было быть без головы), это означало

import matplotlib
matplotlib.use('Agg')

в верхней части моего основного сценария тестирования. Мне не нужно было трогать другие файлы.

Это также можно установить в файле конфигурации 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

Таким образом, бэкэнд не должен быть жестко закодирован, если код передается другим людям. Для получения дополнительной информации проверьте документацию.

Выложенные вами ошибки не связаны. Первый из-за того, что вы выбрали бэкэнд, который не предназначен для интерактивного использования, то есть agg. Вы все еще можете использовать (и должны использовать) те для создания графиков в сценариях, которые не требуют взаимодействия с пользователем.

Если вам нужна интерактивная лабораторная среда, как в Matlab/Pylab, вы, очевидно, импортировали бы бэкэнд, поддерживающий использование графического интерфейса, такой как Qt4Agg (требуется Qt и AGG), GTKAgg (GTK AGG) или WXAgg (wxWidgets и Agg).

Я бы начал с попытки использовать WXAgg, кроме того, что это действительно зависит от того, как вы установили Python и matplotlib (источник, пакет и т. Д.)

Перед запуском Python вы можете сделать в Bash

export MPLBACKEND=TkAgg

Вы также можете попробовать просмотреть график в браузере.

Используйте следующее:

matplotlib.use('WebAgg')

Для новичков,

matplotlib.pyplot.switch_backend(newbackend)

Я ударил это при попытке скомпилировать python, numpy, scipy, matplotlib в моем собственном VIRTUAL_ENV

Перед установкой matplotlib вы должны собрать и установить: pygobject pycairo pygtk

А затем сделайте это с помощью matplotlib: Перед сборкой matplotlib проверьте с помощью 'python ./setup.py build --help', если бэкэнд 'gtkagg' включен. Затем соберите и установите

Перед экспортом PKG_CONFIG_PATH=$VIRTUAL_ENV/lib/pkgconfig

Другие вопросы по тегам