it-swarm.com.ru

Как мне установить '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
66
user504909

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

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

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

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

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

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

  • TkAgg
  • WX
  • QTAgg
  • QT4Agg
67
Andrea Spadaccini

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

import matplotlib
matplotlib.use('Agg')

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

17
Ben

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

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

16
BenC

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

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

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

7
Jim Brissom

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

2
btwe

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

export MPLBACKEND=TkAgg
0
Friedrich