matplotlib не показывает мои рисунки, хотя я вызываю pyplot.show () - PullRequest
156 голосов
/ 24 сентября 2011

Требуется помощь по 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

Ответы [ 14 ]

164 голосов
/ 24 сентября 2011

Если я установлю свой бэкэнд на 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']

Справка:

65 голосов
/ 21 декабря 2012

Я столкнулся с точно такой же проблемой в Ubuntu 12.04, потому что я установил matplotlib (в пределах virtualenv), используя

pip install matplotlib

Короче говоря, мой совет: не пытайтесь устанавливать matplotlib, используя pip или вручную; пусть настоящий менеджер пакетов (например, apt-get / synaptic) установит его и все его зависимости для вас.

К сожалению, бэкэнды matplotlib (альтернативные методы для рендеринга ваших графиков) имеют всевозможные зависимости, с которыми pip не будет иметь дело. Еще хуже, это терпит неудачу тихо; то есть pip install matplotlib, кажется, успешно устанавливает matplotlib. Но когда вы попытаетесь использовать его (например, pyplot.show()), окно графика не появится. Я попробовал все различные бэкэнды, которые предлагают люди в сети (Qt4Agg, GTK и т. Д.), И все они потерпели неудачу (то есть, когда я попытался импортировать matplotlib.pyplot, я получил ImportError, потому что он пытается импортировать некоторую отсутствующую зависимость ). Затем я исследовал, как установить эти зависимости, но мне просто захотелось отказаться от использования pip (в virtualenv) в качестве жизнеспособного решения для установки любого пакета, который не зависит от Python.

Весь этот опыт заставил меня вернуться к apt-get / synaptic (т. Е. Менеджеру пакетов Ubuntu), чтобы установить программное обеспечение, подобное matplotlib. Это сработало отлично. Конечно, это означает, что вы можете устанавливать только в свои системные каталоги, не в пользу virtualenv, и вы застряли с версиями, которые распространяет Ubuntu, что может сильно отставать от текущей версии ...

31 голосов
/ 18 марта 2015

% встроенного matplotlib

Для меня работа с ноутбуком, добавление вышеупомянутой строки, прежде чем сюжет сработает.

9 голосов
/ 13 ноября 2012

Для дальнейшего использования,

Я столкнулся с той же проблемой - pylab не показывался при ipython. Проблема была исправлена ​​путем изменения файла конфигурации ipython {ipython_config.py}. В конфигурационном файле

c.InteractiveShellApp.pylab = 'auto'

Я изменил 'auto' на 'qt', и теперь я вижу графики

8 голосов
/ 03 ноября 2016

Просто введите:

plt.ion()

См. https://www.youtube.com/watch?v=1zmV8lZsHF4 в 23:30!

plt используется из-за моего импорта: import matplotlib.pyplot как plt

Я использую python2.7 на Mac с iTerm2.

6 голосов
/ 16 сентября 2016

Что решило мою проблему, так это использование двух строчек в блокноте ipython вверху

%matplotib inline
%pylab inline

И это сработало.Я использую Ubuntu16.04 и ipython-5.1

2 голосов
/ 06 августа 2016

Добавление следующих двух строк перед импортом pylab, кажется, работает для меня

import matplotlib
matplotlib.use("gtk")

import sys
import pylab
import numpy as np
2 голосов
/ 02 июня 2016

Мне пришлось установить 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, я просто столкнулся с множеством проблем, при этом все бэкэнды тоже не работали.

0 голосов
/ 15 июля 2018

Я обнаружил, что мне нужно window = Tk(), а затем window.mainloop()

0 голосов
/ 25 августа 2017

После запуска вашего кода включите:

import pylab as p
p.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...