matplotlib не показує мої малюнки, хоча я називаю pyplot.show ()


175

Довідка, необхідна для 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

Відповіді:


177

Якщо я можу встановити бекенда 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
Я спробував, але у мене з’явилася помилка на кшталт:ImportError: No module named _backend_gdk
Баська

6
Вибачте за багато коментарів. Це працює. Я спробував Qt4Agg і вдарив. Дякую :) .. Останнє, де я можу знайти matplotlibrc за замовчуванням чи є якийсь спосіб його створити?
Баська

Вибачте за неохайність. Я думаю, що знайшов
Баська

8
Ця відповідь стара, тепер має бути налаштування ~/.config/matplotlib/matplotlibrc(як мінімум для python 3). У мене просто була пов’язана проблема, і я думаю, що це було викликано використанням matplotlib в python 2.7, який створив ~/.matplotlib/каталог, і python 3 перестав читати налаштування в ~/.config/matplotlib/. Видалення ~/.matplotlib/вирішило проблему для мене.
naught101

5
Через 6 років ця проблема все ще існує ... Тепер я пам’ятаю, чому я ненавиджу Python: проблема в кожному рядку коду.
pookie

70

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

pip install matplotlib

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

На жаль, підсистеми matplotlib (альтернативні методи фактичного надання ваших ділянок) мають всілякі залежності, з якими піп не буде мати справу. Ще гірше, що він мовчить; тобто, pip install matplotlibздається, успішно встановити matplotlib. Але коли ви намагаєтесь його використати (наприклад pyplot.show()), вікно сюжету не з’явиться. Я спробував усі різні підказки, які пропонують люди в Інтернеті (Qt4Agg, GTK тощо), і всі вони зазнали невдач (тобто коли я намагався імпортувати matplotlib.pyplot, я отримую, ImportErrorтому що він намагається імпортувати деяку залежність, якої не вистачає). Потім я дослідив, як встановити ці залежності, але це просто змусило мене відмовитись від використання pip (у межах virtualenv) як життєздатного рішення для встановлення будь-якого пакета, що має не-Python-пакетний залежність.

Весь досвід передавав мені повзання назад до apt-get / synaptic (тобто менеджера пакунків Ubuntu) для встановлення програмного забезпечення типу matplotlib. Це спрацювало чудово. Звичайно, це означає, що ви можете встановлювати лише у ваші системні каталоги, нічого доброго не віртуолв, і ви застрягли в версіях, які розповсюджує Ubuntu, які можуть бути набагато відстані від поточної версії ...


2
Ваша відповідь тривала, ви можете розглянути можливість скорочення програми.
theJollySin

5
Ви спробували --system-site-packagesваріант?
Тяньян Лі

1
% Крістофер Лі Проблема з фігурами, які не відображаються без будь-якої помилки / іншої скарги, тому що за замовчуванням, коли ти pip installє agg. Я не знаю чому, але ви можете змінити це відповідно до відповіді унутбу. pipмає головну перевагу встановлення оновленої версії - aptвстановлює застарілу версію. Іноді є виправлення помилок / нові функції, які потрібно / потрібно.
drevicko

2
Просто деактивація virtualenvпрацювала! І мені вдалося встановити matplotlib 1.4 з вихідної системи (на Ubuntu), але не під virtualenv.
osa

1
І яке рішення для тих із нас, що застрягли на робочих машинах Windows, які не можуть використовувати apt-get?
ale19

34

% matplotlib inline

Для мене працюю із зошитом, додаючи вищезазначений рядок, перш ніж сюжет працює.


Мені потрібно було скористатись %pylab inlineсвоїм ноутбуком, як зазначив @Bhanu Pratap Singh
Рід Сандберг

10

Для подальшого ознайомлення

Я зіткнувся з тією ж проблемою - пілаб не показувався під ipython. Проблема була усунена зміною файлу конфігурації ipython {ipython_config.py}. У конфігураційному файлі

c.InteractiveShellApp.pylab = 'auto'

Я змінив 'auto' на 'qt' і тепер бачу графіки


5
або використовуючи "ipython --pylab = qt"
andrew cooke

Це буде працювати, але це лише часткове вирішення: Якщо по замовчуванням бекенда agg, я не річ , яка %pylab inlineбуде працювати, і стане нормальним графіки при запуску скриптів безпосередньо , а саме: python myscript.py. Відповідь унутбу повинна фіксувати її скрізь.
drevicko


8

Що вирішило мою проблему, було лише використання двох нижче рядків у зошиті ipython вгорі

%matplotib inline
%pylab inline

І це спрацювало. Я використовую Ubuntu16.04 та ipython-5.1


Будь ласка, виправте форматування вищевказаних коментарів ... Дякую.
Сарас Ар'я

Готово - Хоча цей допис для блогів розбиває пілаб, але ви отримаєте уявлення, чому додавання %pylab inlineзмушує його працювати.
Бхану Пратап Сінгх

2

Мені довелося встановити matplotlib з джерела, щоб змусити це працювати. Основні вказівки (від http://www.pyimagesearch.com/2015/08/24/olu-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, я просто зіткнувся з більшими проблемами з усіма різними пакунками, які також не працюють.


1
Працював частування, використовував лише кроки налаштування git та налаштування python, але коли я запускаю його з plt.show () проблем не виникає.
Стів

2

Додавання наступних двох рядків до імпорту pylab, здається, працює для мене

import matplotlib
matplotlib.use("gtk")

import sys
import pylab
import numpy as np

0

Обов’язково увімкнено цей сценарій запуску: (Налаштування> Консоль> Додаткові параметри)

/usr/lib/python2.7/dist-packages/spyderlib/scientific_startup.py

Якщо стандартний PYTHONSTARTUP увімкнено, у вас не буде інтерактивного сюжету


0

Подібно до @Rikki, я вирішив цю проблему, оновивши matplotlibдо pip install matplotlib --upgrade. Якщо ви не можете оновити, видалення та повторна інсталяція можуть спрацювати.

pip uninstall matplotlib
pip install matplotlib

0

Для мене проблема виникає, якщо я просто створять порожній matplotlibrc файл під ~/.matplotlibmacOS. Додавання в нього "backend: macosx" виправляє проблему.

Я думаю, що це помилка: якщо backendне вказано в моєму, matplotlibrcвоно повинно приймати значення за замовчуванням.



0

Я виявив, що мені потрібно window = Tk()і тодіwindow.mainloop()


Ви можете додати трохи пояснень? Чим ваше рішення відрізняється від інших?
Ральф Стубнер

-2

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