Как я могу установить 'backend' в matplotlib в Python? - PullRequest
68 голосов
/ 08 февраля 2011

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

73 голосов
/ 08 февраля 2011

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

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

ImportError: Нет модуля с именем _backend_gdk

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

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

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

  • TkAgg
  • WX
  • QTAgg
  • QT4Agg
20 голосов
/ 27 ноября 2013

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

import matplotlib
matplotlib.use('Agg')

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

19 голосов
/ 15 декабря 2015

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

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

.
7 голосов
/ 08 февраля 2011

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

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

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

2 голосов
/ 17 сентября 2013

Я ударил это при попытке собрать 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

1 голос
/ 21 ноября 2018

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

export MPLBACKEND=TkAgg
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...