Як я можу встановити `` бекенд '' у matplotlib в Python?


89

Я новий користувач 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

Відповіді:


89

Вибраний вами сервер, "agg" не підтримує show ().

AGGбекенд призначений для запису у файл, а не для візуалізації у вікні. Перегляньте розділи поширених запитань на веб-сайті matplotlib.

ImportError: Немає модуля з іменем _backend_gdk

Що стосується другої помилки, можливо, ваш розподіл matplotlib не скомпільований з підтримкою GTK, або ви пропустили пакет PyGTK. Спробуйте встановити його.

Ви викликаєте show()метод всередині терміналу або програми, яка має доступ до графічного середовища?

Спробуйте інші інтерфейси графічного інтерфейсу в такому порядку:

  • TkAgg
  • WX
  • QTAgg
  • QT4Agg

велике спасибі неправильному персоналу, який я зробив, це налаштування matplotlib перед тим, як отримати PyGTK
user504909

1
як побічний коментар, я б спробував QTAgg останнім, оскільки він націлений на QT3 і, ймовірно, буде застарілим у середньостроковій перспективі.
tacaswell

29

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

import matplotlib
matplotlib.use('Agg')

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


Я повинен робити те саме, що мене дуже турбує. Ви коли-небудь знаходили інше елегантне рішення?
QM.py

І я виявив, що для нього важливо бути на самому верху (не після певних інших видів імпорту). +1.
Райан

Так, це має бути абсолютне перше, що ви робите перед будь-яким іншим імпортом matplotlib.
JakeCowton

19

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

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

Якщо вам потрібне інтерактивне лабораторне середовище, як у Matlab / Pylab, ви, очевидно, імпортуєте серверну підтримку, яка підтримує використання графічного інтерфейсу, наприклад Qt4Agg (потрібні Qt та AGG), GTKAgg (GTK an AGG) або WXAgg (wxWidgets та Agg).

Я б почав із спроби використовувати WXAgg, крім того, це насправді залежить від того, як ви встановили Python та matplotlib (джерело, пакет тощо)



3

Ви також можете спробувати переглянути графік у браузері.

Використовуйте наступне:

matplotlib.use('WebAgg')

2

Я вдарив це при спробі скомпілювати 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


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.