Ich bin mir sicher, dass ich etwas sehr Einfaches vergessen habe, aber ich kann bestimmte Handlungen nicht dazu bringen, mit Seaborn zu arbeiten.
Wenn ich mache:
import seaborn as sns
Dann erhalten alle Plots, die ich wie gewohnt mit matplotlib erstelle, das Seaborn-Styling (mit dem grauen Gitter im Hintergrund).
Wenn ich jedoch versuche, eines der Beispiele zu tun, wie zum Beispiel:
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, aber der Plot wird nicht angezeigt.
Ich bin ein wenig verwirrt, weil Matplotlib richtig zu funktionieren scheint und die Seaborn-Stile auf andere Matplotlib-Plots angewendet werden, aber die Seaborn-Funktionen scheinen nichts zu tun. Hat jemand eine Ahnung, was das Problem sein könnte?
Nur eine kurze Vermutung … wenn Sie Ipython verwenden, müssen Sie anrufen %matplotlib inline um das Inline-Backend anzugeben. Sonst könntest du anrufen sns.plt.show() um den Plot in ein separates Fenster zu rendern.
– Jakob
27. Oktober 2014 um 21:42 Uhr
Jakob
Mit Seaborn erstellte Plots müssen wie gewöhnliche Matplotlib-Plots angezeigt werden. Dies kann mit der erfolgen
plt.show()
Funktion von matplotlib.
Ursprünglich habe ich die Lösung gepostet, um das bereits importierte Matplotlib-Objekt von Seaborn zu verwenden (sns.plt.show()), dies wird jedoch als schlechte Praxis angesehen. Importieren Sie daher einfach direkt die matplotlib.pyplot Modul und zeigen Sie Ihre Plots mit
import matplotlib.pyplot as plt
plt.show()
Wenn das IPython-Notebook verwendet wird, kann das Inline-Backend aufgerufen werden, um die Notwendigkeit des Aufrufs von show nach jedem Plot zu beseitigen. Die jeweilige Magie ist
%matplotlib inline
Ich bekomme immer noch keinen SNS-Plot interaktiv angezeigt. sns.plt.show() funktioniert nicht. Aber wenn ich es in Inline ändere, bekomme ich die Handlung (aber nicht interaktiv). Irgendeine Idee warum?
– Benutzer 3317704
11. März 2015 um 11:37 Uhr
Sie könnten versuchen, ein Backend mit etwas wie anzugeben %matplotlib qt, %matplotlib gtk, %matplotlib tk usw. siehe %matplotlib? für mehr Informationen
– Jakob
11. März 2015 um 14:06 Uhr
Es ist wirklich ärgerlich, dass es in den Beispielen auf der Seaborn-Seite keinen Befehl sns.plt.show() gibt. Wie können sie etwas so Elementares vergessen?
– Michael Hecht
18. April 2015 um 13:06 Uhr
@MichaelHecht Das Fehlen von plt.show() wurde irgendwie angegangen dieses Problem, können Sie Ihre Beschwerden dort richten. Vielleicht werden sie es zu den Dokumenten hinzufügen.
– Jakob
18. April 2015 um 20:17 Uhr
@Jakob gibt es in Jupyter (über Anaconda) eine Möglichkeit, diese Magie hinzuzufügen %matplotlib inline in eine Art Konfigurationsdatei, damit sie immer angewendet wird? Oder muss ich es immer zu jeder neuen Arbeitsmappe hinzufügen?
– warumtheq
12. Mai 2016 um 10:25 Uhr
Martin Thomas
Ich stelle mir diese Frage ziemlich regelmäßig und es dauert immer eine Weile, bis ich finde, was ich suche:
import seaborn as sns
import matplotlib.pyplot as plt
plt.show() # <--- This is what you are looking for
Bitte beachten Sie: In Python 2 können Sie auch verwenden sns.plt.show()aber nicht in Python 3.
Um Verwirrung zu vermeiden (da es einige in den Kommentaren zu geben scheint). Angenommen, Sie sind auf Jupyter:
%matplotlib inline > zeigt die Diagramme an INNERHALB das Notebook
sns.plt.show() > zeigt die Diagramme an AUSSEN des Notizbuches
%matplotlib inline Wille ÜBERSCHREIBENsns.plt.show() in dem Sinne, dass Plots gezeigt werden IN das Notebook auch wenn sns.plt.show() wird genannt.
Und ja, es ist einfach, die Zeile in Ihre Konfiguration aufzunehmen:
%matplotlib automatisch inline in IPython Notebook ausführen
Aber es scheint eine bessere Konvention zu sein, es zusammen mit Importen im eigentlichen Code zu halten.
Für Spark-Notebooks?
– Technazi
24. Oktober 2018 um 17:05 Uhr
Das hat bei mir funktioniert
import matplotlib.pyplot as plt
import seaborn as sns
.
.
.
plt.show(sns)
Wenn Sie einplanen IPython-Konsole (wo Sie nicht verwenden können %matplotlib inline) anstelle des Jupyter-Notebooks und möchte nicht ausgeführt werden plt.show() wiederholt, können Sie die IPython-Konsole mit starten ipython --pylab:
$ ipython --pylab
Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.0.1 -- An enhanced Interactive Python. Type '?' for help.
Using matplotlib backend: Qt5Agg
In [1]: import seaborn as sns
In [2]: tips = sns.load_dataset("tips")
In [3]: sns.relplot(x="total_bill", y="tip", data=tips) # you can see the plot now
Benutzer 3317704
Mein Rat ist, nur a zu geben
plt.figure() und geben Sie einige SNS-Plot. Zum Beispiel
sns.distplot(data).
Obwohl es so aussieht, als ob es keinen Plot zeigt, können Sie den Plot sehen, wenn Sie die Figur maximieren.
YC Tsim
Um den Stil Ihres Code-Snippets zu erkennen, haben Sie vermutlich IPython und nicht Jupyter Notebook verwendet.
In diesem Ausgabe Auf GitHub wurde 2016 von einem Mitglied von IPython klargestellt, dass die Anzeige von Diagrammen nur funktionieren würde, wenn “nur funktionieren, wenn es sich um einen Jupyter-Kernel handelt”. Und so kam es dass der %matplotlib inline würde nicht funktionieren.
Ich hatte gerade das gleiche Problem und schlage vor, dass Sie Jupyter Notebook für die Visualisierung verwenden.
10718400cookie-checkSeaborn-Grundstücke werden nicht angezeigtyes
Nur eine kurze Vermutung … wenn Sie Ipython verwenden, müssen Sie anrufen
%matplotlib inline
um das Inline-Backend anzugeben. Sonst könntest du anrufensns.plt.show()
um den Plot in ein separates Fenster zu rendern.– Jakob
27. Oktober 2014 um 21:42 Uhr