Matplotlib не показывает мои рисунки, хотя я называю pyplot.show()
Мне нужна твоя помощь о matplotlib. Да, я не забыл называть pyplot.show().
$ipython --pylab
import matplotlib.pyplot as p
p.plot(range(20), range(20))
В качестве вывода возвращается matplotlib.lines.Line2D at 0xade2b2c
.
p.show()
Ничего не получится. Нет сообщения об ошибке. Нет нового окна. Ничего. Я устанавливаю matplotlib
с помощью pip, и я не принимал никаких сообщений об ошибках.
Подробнее:
Я использую
- Ubuntu
- IPython v0.11
- Python v2.6.6
- matplotlib v1.0.1
Ответы
Ответ 1
Если я установил свой backend на template
в ~/.matplotlib/matplotlibrc
,
то я могу воспроизвести ваши симптомы:
~/.matplotlib/matplotlibrc:
# backend : GtkAgg
backend : template
Обратите внимание, что файл matplotlibrc
может не находиться в каталоге ~/.matplotlib/
. В этом случае следующий код показывает, где он находится:
>>> import matplotlib
>>> matplotlib.matplotlib_fname()
In [1]: import matplotlib.pyplot as p
In [2]: p.plot(range(20),range(20))
Out[2]: [<matplotlib.lines.Line2D object at 0xa64932c>]
In [3]: p.show()
Если вы отредактируете ~/.matplotlib/matplotlibrc
и измените бэкэнд на что-то вроде GtkAgg
, вы увидите график. Вы можете перечислить все бэкенды, доступные на вашем компьютере, с помощью
import matplotlib.rcsetup as rcsetup
print(rcsetup.all_backends)
Он должен вернуть список, например:
['GTK', 'GTKAgg', 'GTKCairo', 'FltkAgg', 'MacOSX', 'QtAgg', 'Qt4Agg',
'TkAgg', 'WX', 'WXAgg', 'CocoaAgg', 'agg', 'cairo', 'emf', 'gdk', 'pdf',
'ps', 'svg', 'template']
Ссылка:
Ответ 2
Я столкнулся с той же проблемой на Ubuntu 12.04, потому что я установил matplotlib (внутри virtualenv), используя
pip install matplotlib
Короче говоря, мой совет: не пытайтесь установить matplotlib, используя пипс или вручную; пусть реальный менеджер пакетов (например, apt-get/synaptic) установит его и все его зависимости для вас.
К сожалению, matplotlib backends (альтернативные методы для фактического рендеринга ваших участков) имеют всевозможные зависимости, с которыми pip не справится. Хуже того, он терпит неудачу; то есть pip install matplotlib
, как представляется, успешно устанавливает matplotlib. Но когда вы пытаетесь использовать его (например, pyplot.show()
), окно графика не появится. Я пробовал использовать все разные бэкэнды, предлагаемые людьми в Интернете (Qt4Agg, GTK и т.д.), И все они потерпели неудачу (т.е. Когда я попытался импортировать matplotlib.pyplot, я получаю ImportError
, потому что он пытается импортировать некоторую зависимость, которая отсутствует). Затем я исследовал, как устанавливать эти зависимости, но это просто заставило меня отказаться от использования pip (внутри virtualenv) в качестве жизнеспособного решения для установки любого пакета с зависимостями пакета, отличного от Python.
Весь опыт присылал мне сканирование обратно в apt-get/synaptic (т.е. менеджер пакетов Ubuntu) для установки программного обеспечения, такого как matplotlib. Это сработало отлично. Конечно, это означает, что вы можете устанавливать только в свои системные каталоги, без виртуализма, и вы застряли в версиях, которые Ubuntu распространяет, что может быть за текущей версией...
Ответ 3
% matplotlib inline
Для меня я работаю с записной книжкой, добавляя вышеприведенную строку перед тем, как сюжет работает.
Ответ 4
В будущем,
Я столкнулся с той же проблемой - pylab не показывался под ipython. Проблема была устранена путем изменения конфигурационного файла ipython {ipython_config.py}. В файле конфигурации
c.InteractiveShellApp.pylab = 'auto'
Я изменил 'auto' на 'qt', и теперь я вижу графики
Ответ 5
Просто введите:
plt.ion()
См. https://www.youtube.com/watch?v=1zmV8lZsHF4 в 23:30!
plt
используется из-за моего импорта: import matplotlib.pyplot
как plt
Я использую python2.7 на mac с iTerm2.
Ответ 6
Мне пришлось установить matplotlib из источника, чтобы заставить это работать. Ключевыми инструкциями (из http://www.pyimagesearch.com/2015/08/24/resolved-matplotlib-figures-not-showing-up-or-displaying/) являются:
$ workon plotting
$ pip uninstall matplotlib
$ git clone https://github.com/matplotlib/matplotlib.git
$ cd matplotlib
$ python setup.py install
Изменив бэкэнд, как говорит @unutbu, я просто столкнулся с нагрузками больше проблем со всеми разными бэкендами, которые не работают.
Ответ 7
Добавление следующих двух строк до импорта pylab, похоже, работает для меня
import matplotlib
matplotlib.use("gtk")
import sys
import pylab
import numpy as np
Ответ 8
Что я решил решить, просто использовал две приведенные ниже строки в ноутбуке ipython вверху
%matplotib inline
%pylab inline
И это сработало. Я использую Ubuntu16.04 и ipython-5.1
Ответ 9
Обязательно включите этот запуск script:
(Настройки > Консоль > Дополнительные параметры)
/usr/lib/python2.7/dist-packages/spyderlib/scientific_startup.py
Если стандартный PYTHONSTARTUP включен, у вас не будет интерактивного сюжета
Ответ 10
Подобно @Rikki, я решил эту проблему, обновив matplotlib
с помощью pip install matplotlib --upgrade
. Если вы не можете обновить удаление, и переустановка может работать.
pip uninstall matplotlib
pip install matplotlib
Ответ 11
Для меня проблема возникает, если я просто создаю пустой файл matplotlibrc
под ~/.matplotlib
на macOS. Добавление "backend: macosx" в нем устраняет проблему.
Я думаю, что это ошибка: если backend
не указан в моем matplotlibrc
, он должен принять значение по умолчанию.
Ответ 12
После запуска кода включите:
import pylab as p
p.show()
Ответ 13
Для Ubuntu 12.04:
sudo apt-get install python-qt4
virtualenv .env --no-site-packages
source .env/bin/activate
easy_install -U distribute
ln -s /usr/lib/python2.7/dist-packages/PyQt4 .
ln -s /usr/lib/python2.7/dist-packages/sip.so .
pip install matplotlib