matplotlib zeigt meine Zeichnungen nicht an, obwohl ich pyplot.show () aufrufe.

175

Hilfe auf matplotlib erforderlich. Ja, ich habe nicht vergessen, die pyplot.show () aufzurufen.

$ ipython --pylab

import matplotlib.pyplot as p 
p.plot(range(20), range(20))

Es wird matplotlib.lines.Line2D at 0xade2b2cals Ausgabe zurückgegeben.

p.show()

Es kann nichts passieren. Keine Fehlermeldung. Kein neues Fenster. Nichts. Ich installiere matplotlibmit pip und habe keine Fehlermeldungen erhalten.

Einzelheiten:

Ich benutze,

  • Ubuntu
  • IPython v0.11
  • Python v2.6.6
  • matplotlib v1.0.1
Baskaya
quelle

Antworten:

177

Wenn ich mein Backend auf templatein setze ~/.matplotlib/matplotlibrc, kann ich Ihre Symptome reproduzieren:

~ / .matplotlib / matplotlibrc:

# backend      : GtkAgg
backend      : template

Beachten Sie, dass sich die Datei matplotlibrcmöglicherweise nicht im Verzeichnis befindet ~/.matplotlib/. In diesem Fall zeigt der folgende Code, wo er sich befindet:

>>> 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()

Wenn Sie ~/.matplotlib/matplotlibrcdas Backend bearbeiten und in etwas wie ändern GtkAgg, sollte ein Plot angezeigt werden. Sie können alle auf Ihrem Computer verfügbaren Backends mit auflisten

import matplotlib.rcsetup as rcsetup
print(rcsetup.all_backends)

Es sollte eine Liste wie folgt zurückgeben:

['GTK', 'GTKAgg', 'GTKCairo', 'FltkAgg', 'MacOSX', 'QtAgg', 'Qt4Agg',
'TkAgg', 'WX', 'WXAgg', 'CocoaAgg', 'agg', 'cairo', 'emf', 'gdk', 'pdf',
'ps', 'svg', 'template']

Referenz:

unutbu
quelle
2
Ich habe es versucht, aber ich habe eine Fehlermeldung erhalten wie:ImportError: No module named _backend_gdk
Baskaya
6
Entschuldigung für viele Kommentare. Es klappt. Ich habe Qt4Agg ausprobiert und getroffen. Danke :) .. Letzte Sache, wo finde ich Standard-Matplotlibrc oder gibt es eine Möglichkeit, es zu erstellen?
Baskaya
Entschuldigung für die Unordnung. Ich glaube, ich habe gefunden
Baskaya
8
Diese Antwort ist alt, config sollte jetzt in sein ~/.config/matplotlib/matplotlibrc(zumindest für Python 3). Ich hatte gerade ein verwandtes Problem und ich denke, es wurde durch die Verwendung von matplotlib in Python 2.7 verursacht, das ein ~/.matplotlib/Verzeichnis erstellt und Python 3 daran gehindert hat, die Konfiguration einzulesen ~/.config/matplotlib/. Das Löschen hat ~/.matplotlib/das Problem für mich behoben.
naught101
5
6 Jahre später und dieses Problem besteht immer noch ... Jetzt erinnere ich mich, warum ich Python hasse: ein Problem in jeder Codezeile.
Pookie
70

Ich bin unter Ubuntu 12.04 auf genau das gleiche Problem gestoßen, weil ich matplotlib (innerhalb einer virtuellen Umgebung) mit installiert habe

pip install matplotlib

Um es kurz zu machen, mein Rat ist: Versuchen Sie nicht, matplotlib mit pip oder von Hand zu installieren. Lassen Sie es von einem echten Paketmanager (z. B. apt-get / synaptic) und all seinen Abhängigkeiten für Sie installieren.

Leider weisen die Backends von matplotlib (alternative Methoden zum tatsächlichen Rendern Ihrer Plots) alle möglichen Abhängigkeiten auf, mit denen pip nicht umgehen kann. Schlimmer noch, es versagt lautlos; Das heißt, pip install matplotlibscheint matplotlib erfolgreich zu installieren. Wenn Sie jedoch versuchen, es zu verwenden (z. B. pyplot.show()), wird kein Plotfenster angezeigt. Ich habe all die verschiedenen Backends ausprobiert, die die Leute im Web vorschlagen (Qt4Agg, GTK usw.), und sie sind alle fehlgeschlagen (dh ich habe versucht, matplotlib.pyplot zu importieren, ImportErrorweil versucht wird, eine fehlende Abhängigkeit zu importieren). Ich habe dann nachgeforscht, wie diese Abhängigkeiten installiert werden können, aber ich wollte einfach aufgeben, pip (innerhalb von virtualenv) als praktikable Installationslösung für jedes Paket zu verwenden, das Nicht-Python-Paketabhängigkeiten aufweist.

Die ganze Erfahrung hat mich dazu gebracht, zurück zu apt-get / synaptic (dh dem Ubuntu-Paketmanager) zu kriechen, um Software wie matplotlib zu installieren. Das hat perfekt funktioniert. Das bedeutet natürlich, dass Sie nur in Ihre Systemverzeichnisse installieren können, keine Virtual-Env-Güte, und Sie bleiben bei den von Ubuntu vertriebenen Versionen hängen, die möglicherweise weit hinter der aktuellen Version zurückliegen ...

Christopher Lee
quelle
2
Ihre Antwort ist ein BIT lang, Sie könnten eine Verkürzung für das OP in Betracht ziehen.
TheJollySin
5
Haben Sie die --system-site-packagesOption ausprobiert ?
Tianyang Li
1
% Christopher Lee Das Problem mit Zahlen, die nicht ohne Fehler / andere Beschwerden angezeigt werden, ist, dass das Standard-Backend verwendet wird, wenn Sie pip installes sind agg. Ich bin mir nicht sicher warum, aber Sie können es gemäß der Antwort des Unutbu ändern. piphat den Hauptvorteil, eine aktuelle Version zu aptinstallieren - installiert eine veraltete Version. Manchmal gibt es Fehlerbehebungen / neue Funktionen, die Sie wollen / brauchen.
Drevicko
2
Nur das Deaktivieren hat virtualenvfunktioniert! Und ich konnte matplotlib 1.4 systemweit von der Quelle (unter Ubuntu) installieren, aber nicht unter virtualenv.
osa
1
Und was ist die Lösung für diejenigen von uns, die auf Windows-Arbeitsmaschinen stecken, die apt-get nicht verwenden können?
Ale19
33

% matplotlib inline

Wenn ich mit einem Notizbuch arbeite, füge ich die obige Zeile hinzu, bevor der Plot funktioniert.

Grampus
quelle
Ich musste %pylab inlineauf meinem Notizbuch verwenden, wie von @Bhanu Pratap Singh
Reed Sandberg
10

Zum späteren Nachschlagen,

Ich habe das gleiche Problem festgestellt - Pylab wurde unter Ipython nicht angezeigt. Das Problem wurde behoben, indem die Konfigurationsdatei {ipython_config.py} von ipython geändert wurde. In der Konfigurationsdatei

c.InteractiveShellApp.pylab = 'auto'

Ich habe 'auto' in 'qt' geändert und jetzt sehe ich Grafiken

anon
quelle
5
oder mit "ipython --pylab = qt"
andrew cooke
Dies wird funktionieren, aber es ist nur eine Teillösung: Wenn Ihr Standard-Backend ist agg, funktioniert das weder %pylab inline, noch werden Diagramme angezeigt , wenn Sie Skripte direkt ausführen, dh : python myscript.py. Die Antwort von unutbu sollte es überall beheben.
Drevicko
8

Was mein Problem gelöst hat, war nur die Verwendung der beiden folgenden Zeilen im Ipython-Notizbuch oben

%matplotib inline
%pylab inline

Und es hat funktioniert. Ich benutze Ubuntu16.04 und ipython-5.1

Bhanu Pratap Singh
quelle
Bitte korrigieren Sie die Formatierung der obigen Kommentare ... Danke.
Saras Arya
Fertig - Obwohl dieser Blogpost Pylab schlägt, werden Sie eine Vorstellung davon bekommen, warum das Hinzufügen %pylab inlinefunktioniert.
Bhanu Pratap Singh
2

Ich musste matplotlib von der Quelle installieren, damit dies funktioniert. Die wichtigsten Anweisungen (von http://www.pyimagesearch.com/2015/08/24/resolved-matplotlib-figures-not-showing-up-or-displaying/ ) sind:

$ workon plotting
$ pip uninstall matplotlib
$ git clone https://github.com/matplotlib/matplotlib.git
$ cd matplotlib
$ python setup.py install

Durch das Ändern des Backends, wie @unutbu sagt, stieß ich auf viele weitere Probleme, da all die verschiedenen Backends auch nicht funktionierten.

Rikki
quelle
1
Arbeitete ein Vergnügen, benutzte nur die Git-Klon- und Python-Setup-Schritte, aber wenn ich es mit plt.show () ausführte, gab es keine Probleme.
Steve
2

Das Hinzufügen der folgenden zwei Zeilen vor dem Importieren von Pylab scheint für mich zu funktionieren

import matplotlib
matplotlib.use("gtk")

import sys
import pylab
import numpy as np
Pau
quelle
0

Stellen Sie sicher, dass dieses Startskript aktiviert ist: (Einstellungen> Konsole> Erweiterte Optionen)

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

Wenn das Standard-PYTHONSTARTUP aktiviert ist, haben Sie kein interaktives Diagramm

Covich
quelle
0

Ähnlich wie bei @Rikki habe ich dieses Problem durch ein Upgrade matplotlibmit gelöst pip install matplotlib --upgrade. Wenn Sie kein Upgrade durchführen können, funktioniert möglicherweise die Deinstallation und Neuinstallation.

pip uninstall matplotlib
pip install matplotlib
Seanny123
quelle
0

Für mich tritt das Problem auf, wenn ich unter macOS einfach eine leere matplotlibrc Datei unter erstelle ~/.matplotlib. Das Hinzufügen von "backend: macosx" behebt das Problem.

Ich denke, es ist ein Fehler: Wenn backendin meinem nicht angegeben matplotlibrc, sollte es den Standardwert annehmen.

an0
quelle
0

Nach dem Ausführen Ihres Codes gehören:

import pylab as p
p.show()
Shrish Trivedi
quelle
0

Ich fand, dass ich brauchte window = Tk()und dannwindow.mainloop()

R Keene
quelle
Können Sie eine Erklärung hinzufügen? Wie unterscheidet sich Ihre Lösung von den anderen?
Ralf Stubner
-2

Für 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
nanvel
quelle