Die vorgeschlagenen Lösungen sind mit Seaborn 0.8.1 nicht kompatibel. Sie geben die folgenden Fehler aus, weil sich die Seaborn-Schnittstelle geändert hat:
AttributeError: 'AxesSubplot' object has no attribute 'fig'
When trying to access the figure
AttributeError: 'AxesSubplot' object has no attribute 'savefig'
when trying to use the savefig directly as a function
AKTUALISIEREN:
Ich habe vor kurzem verwendet PairGrid Objekt von Seaborn, um ein Diagramm zu erstellen, das dem in ähnelt dieses Beispiel. In diesem Fall seit GridPlot ist kein Handlungsobjekt wie zum Beispiel sns.swarmplotEs hat keine get_figure() Funktion. Es ist möglich, direkt auf die Matplotlib-Abbildung zuzugreifen:
fig = myGridPlotObject.fig
Ich habe kürzlich das PairGrid-Objekt von Seaborn wie im Beispiel verwendet
– Salvatore Cosentino
21. Dezember 2016 um 7:10 Uhr
Dies ist die einzige Antwort, die auch für PairGrid und JointGrid funktioniert. Ich denke, sie sollte akzeptiert werden.
– Ryszard Cetnarski
21. September 2018 um 12:44 Uhr
Die Anforderung von get_figure, die Figur zu speichern, ist sehr nervig. Es sollte möglich sein, online einen Plot in einer Datei zu speichern.
– Minikühlschrank
10. August 2020 um 11:32 Uhr
Einige der oben genannten Lösungen haben bei mir nicht funktioniert. Das .fig Das Attribut wurde nicht gefunden, als ich das versuchte, und ich konnte es nicht verwenden .savefig() direkt. Was jedoch funktionierte, war:
sns_plot.figure.savefig("output.png")
Ich bin ein neuerer Python-Benutzer, daher weiß ich nicht, ob dies auf ein Update zurückzuführen ist. Ich wollte es erwähnen, falls jemand auf die gleichen Probleme stößt wie ich.
Das hat bei mir mit a funktioniert seaborn.swarmplotaber für seaborn.lmplot das wird nicht funktionieren. Mit seaborn.lmplotIch fand sns_plot.savefig("output.png") funktionierte wie in Salvatores Antwort, aber ohne Notwendigkeit get_figure() Anruf.
– Wayne
12. April 2018 um 13:49 Uhr
Dies funktionierte für displot mit seegeboren 0.11.2. Die einzige Antwort, die ich bekommen konnte, um zu arbeiten!
– Cornelius Römer
23. November 2021 um 21:25 Uhr
Jade-Cache
Weniger Zeilen für Suchende im Jahr 2019:
import matplotlib.pyplot as plt
import seaborn as sns
df = sns.load_dataset('iris')
sns_plot = sns.pairplot(df, hue="species", height=2.5)
plt.savefig('output.png')
AKTUALISIERUNGSHINWEIS: size geändert wurde height.
es erzeugt ein weißes Bild!
– Günstlinge
28. Dezember 2020 um 10:42 Uhr
@ user_007 nicht sicher, warum Sie ein weißes Bild erhalten. Ich habe den Code heute gerade getestet und er ist sowohl für Jupyter Notebook als auch für die Ausgabedatei in Ordnung. Möglicherweise möchten Sie Ihre Konsole/Python aktualisieren und die Ansichtseinstellungen Ihres Computers überprüfen.
– Jadecacho
20. Juli 2021 um 15:17 Uhr
Simon Gibbons
Sie sollten nur in der Lage sein, die zu verwenden savefig Methode von sns_plot direkt.
sns_plot.savefig("output.png")
Zur Verdeutlichung Ihres Codes, wenn Sie auf die Matplotlib-Abbildung zugreifen möchten sns_plot wohnt dann kannst du es direkt mit bekommen
fig = sns_plot.fig
In diesem Fall gibt es keine get_figure Methode, wie Ihr Code annimmt.
ich benutze distplot und get_figure Bild erfolgreich zu speichern.
Arbeitete für meine Umgebung: Funktion sns.distplot() in python 3.5.6 mit seaborn 0.9.0 . Außerdem Funktion sns.pairplot() braucht die Zeile von nicht get_figure()
– Scott Yang
1. April 2019 um 7:04 Uhr
Ich konnte die anderen Antworten nicht zum Laufen bringen und habe dies schließlich für matplotlib==3.2.1 zum Laufen gebracht. Dies gilt insbesondere, wenn Sie dies innerhalb einer for-Schleife oder eines iterativen Ansatzes tun.
Beachten Sie, dass die savefig vor dem Show-Call stehen muss. Andernfalls wird ein leeres Bild gespeichert.
Arbeitete für meine Umgebung: Funktion sns.distplot() in python 3.5.6 mit seaborn 0.9.0 . Außerdem Funktion sns.pairplot() braucht die Zeile von nicht get_figure()
– Scott Yang
1. April 2019 um 7:04 Uhr
4b0
Das funktioniert für mich
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
sns.factorplot(x='holiday',data=data,kind='count',size=5,aspect=1)
plt.savefig('holiday-vs-count.png')
10578300cookie-checkSo speichern Sie einen Seaborn-Plot in einer Dateiyes
Die Antwort von @ Terry Wang unten hat bei mir funktioniert –
Python 2.7.12
undseaborn 0.7.1
– Cristian E. Nuno
20. September 2018 um 19:04 Uhr
Ein Einzeiler für
seaborn 0.9
:sns.regplot(x='age', y='income', data=pd.read_csv('income_data.csv')).get_figure().savefig('income_f_age.png')
– Anton Tarasenko
18. November 2018 um 14:17 Uhr