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