Matplotlib не показывает мои рисунки, хотя я называю pyplot.show() - программирование

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
4b9b3361

Ответ 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