Подтвердить что ты не робот

Как установить '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, но все же ошибка ниже.
  • Может ли кто-нибудь сказать мне исполняемый аргумент backend и его библиотеку зависимостей?

Вот ошибка:

>>> 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
4b9b3361

Ответ 1

В настоящее время выбранный backend, 'agg' не поддерживает show().

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

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

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

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

Попробуйте использовать другие GUI-серверы в следующем порядке:

  • TkAgg
  • WX
  • QTAgg
  • QT4Agg

Ответ 2

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

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

Ответ 3

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

import matplotlib
matplotlib.use('Agg')

в верхней части моего мастер-теста script. Мне не пришлось прикасаться к другим файлам.

Ответ 4

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

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

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

Ответ 5

Я ударил это, пытаясь скомпилировать 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