Ich bin sicher, ich vergesse etwas sehr Einfaches, aber ich kann bestimmte Pläne nicht dazu bringen, mit Seaborn zu arbeiten.
Wenn ich mache:
import seaborn as sns
Dann erhalten alle Diagramme, die ich wie gewohnt mit matplotlib erstelle, das Seaborn-Styling (mit dem grauen Gitter im Hintergrund).
Wenn ich jedoch versuche, eines der Beispiele zu erstellen, wie z.
In [1]: import seaborn as sns
In [2]: sns.set()
In [3]: df = sns.load_dataset('iris')
In [4]: sns.pairplot(df, hue='species', size=2.5)
Out[4]: <seaborn.axisgrid.PairGrid at 0x3e59150>
Die Pairplot-Funktion gibt ein PairGrid-Objekt zurück, das Plot wird jedoch nicht angezeigt.
Ich bin ein wenig verwirrt, weil matplotlib anscheinend richtig funktioniert und die Seaborn-Stile auf andere matplotlib-Plots angewendet werden, aber die Seaborn-Funktionen scheinen nichts zu bewirken. Hat jemand eine Idee, was das Problem sein könnte?
python
matplotlib
seaborn
robc89
quelle
quelle
%matplotlib inline
, um das Inline-Backend anzugeben. Andernfalls können Sie aufrufensns.plt.show()
, um das Diagramm in einem separaten Fenster zu rendern.Antworten:
Mit Seaborn erstellte Diagramme müssen wie normale Matplotlib-Diagramme angezeigt werden. Dies kann mit dem erfolgen
Funktion von matplotlib.
Ursprünglich habe ich die Lösung veröffentlicht, um das bereits importierte matplotlib-Objekt von seaborn (
sns.plt.show()
) zu verwenden. Dies wird jedoch als schlechte Praxis angesehen. Importieren Sie daher einfach direkt das Modul matplotlib.pyplot und zeigen Sie Ihre Plots mitWenn das IPython-Notizbuch verwendet wird, kann das Inline-Backend aufgerufen werden, um die Notwendigkeit zu beseitigen, nach jedem Plot show aufzurufen. Die jeweilige Magie ist
quelle
%matplotlib qt
,%matplotlib gtk
,%matplotlib tk
etc. siehe%matplotlib?
für weitere Informationen%matplotlib inline
einer Reihe von Konfigurationsdateien hinzuzufügen , damit sie immer angewendet wird? Oder muss ich es immer zu jeder neuen Arbeitsmappe hinzufügen?Ich komme ziemlich regelmäßig zu dieser Frage und es dauert immer eine Weile, bis ich finde, wonach ich suche:
Bitte beachten Sie: In Python 2 können Sie auch
sns.plt.show()
Python 3 verwenden , jedoch nicht.Vollständiges Beispiel
Gibt
quelle
AttributeError: module 'seaborn' has no attribute 'plt'
sns.plt
Um Verwirrung zu vermeiden (wie es einige in den Kommentaren zu geben scheint). Angenommen, Sie sind auf Jupyter:
%matplotlib inline
> Zeigt die Plots INSIDE dem Notebooksns.plt.show()
> zeigt die Diagramme AUSSERHALB des Notebooks an%matplotlib inline
wird üBERSCHREIBTsns.plt.show()
in dem Sinne , dass Grundstücke gezeigt werden IN dem Notebook selbst wennsns.plt.show()
genannt wird.Und ja, es ist einfach, die Zeile in Ihre Konfiguration aufzunehmen:
Führen Sie% matplotlib automatisch in IPython Notebook inline aus
Es scheint jedoch eine bessere Konvention zu sein, sie zusammen mit Importen im eigentlichen Code zu halten.
quelle
Das hat bei mir funktioniert
quelle
Mein Rat ist nur zu geben
plt.figure()
und geben Sie einige sns Handlung. Beispielsweisesns.distplot(data)
.Obwohl es so aussieht, zeigt es kein Diagramm. Wenn Sie die Figur maximieren, können Sie das Diagramm sehen.
quelle
plt.figure()
) zu erstellen, bevor ich mein Liniendiagramm erstellt habe, und habe nicht verstanden, warum das Diagramm nicht angezeigt wurde. Großartig, danke!Wenn Sie in der IPython-Konsole (wo Sie sie nicht verwenden können
%matplotlib inline
) anstelle des Jupyter-Notebooks plotten und nichtplt.show()
wiederholt ausführen möchten , können Sie die IPython-Konsole mitipython --pylab
folgenden Funktionen starten :quelle
Um anhand des Stils Ihres Code-Snippets zu erkennen, haben Sie vermutlich IPython anstelle von Jupyter Notebook verwendet.
In dieser Ausgabe auf GitHub wurde von einem Mitglied von IPython im Jahr 2016 klargestellt, dass die Anzeige von Diagrammen nur funktionieren würde, wenn "nur funktioniert, wenn es sich um einen Jupyter-Kernel handelt". Somit
%matplotlib inline
würde das nicht funktionieren.Ich hatte gerade das gleiche Problem und schlage vor, dass Sie Jupyter Notebook für die Visualisierung verwenden.
quelle