Ich habe den folgenden Code ( test_seaborn.py
) ausprobiert :
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
matplotlib.style.use('ggplot')
import seaborn as sns
sns.set()
df = sns.load_dataset('iris')
sns_plot = sns.pairplot(df, hue='species', size=2.5)
fig = sns_plot.get_figure()
fig.savefig("output.png")
#sns.plt.show()
Aber ich bekomme diesen Fehler:
Traceback (most recent call last):
File "test_searborn.py", line 11, in <module>
fig = sns_plot.get_figure()
AttributeError: 'PairGrid' object has no attribute 'get_figure'
Ich gehe davon aus, dass das Finale output.png
existieren wird und so aussehen wird:
Wie kann ich das Problem lösen?
python
pandas
matplotlib
seaborn
neversaint
quelle
quelle
Python 2.7.12
undseaborn 0.7.1
seaborn 0.9
:sns.regplot(x='age', y='income', data=pd.read_csv('income_data.csv')).get_figure().savefig('income_f_age.png')
Antworten:
Entfernen Sie die
get_figure
und verwenden Sie einfachsns_plot.savefig('output.png')
quelle
AttributeError: 'AxesSubplot' object has no attribute 'savefig'
Die vorgeschlagenen Lösungen sind nicht mit Seaborn 0.8.1 kompatibel
Geben Sie die folgenden Fehler an, da sich die Seaborn-Schnittstelle geändert hat:
Mit den folgenden Aufrufen können Sie auf die Abbildung zugreifen (Seaborn 0.8.1-kompatibel):
wie zuvor in dieser Antwort gesehen .
UPDATE: Ich habe kürzlich das PairGrid-Objekt von seaborn verwendet, um ein Diagramm zu erstellen, das dem in diesem Beispiel ähnelt . In diesem Fall hat GridPlot keine Funktion get_figure (), da es sich nicht um ein Plotobjekt wie z. B. sns.swarmplot handelt. Es ist möglich, direkt auf die Matplotlib-Figur zuzugreifen
Wie bereits in anderen Beiträgen in diesem Thread vorgeschlagen.
quelle
Einige der oben genannten Lösungen haben bei mir nicht funktioniert. Das
.fig
Attribut wurde nicht gefunden, als ich das versuchte, und ich konnte es nicht.savefig()
direkt verwenden. Was jedoch funktionierte, war: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 anderes auf die gleichen Probleme stößt wie ich.
quelle
seaborn.swarmplot
, aberseaborn.lmplot
das klappt nicht. Mitseaborn.lmplot
fand ichsns_plot.savefig("output.png")
funktioniert wie in Salvatores Antwort, aber ohneget_figure()
Anruf.Sie sollten nur in der Lage sein, die
savefig
Methode vonsns_plot
direkt zu verwenden.Wenn Sie zur Verdeutlichung Ihres Codes auf die Matplotlib-Figur zugreifen möchten,
sns_plot
in der Sie sich befinden, können Sie sie direkt mit abrufenIn diesem Fall gibt es keine
get_figure
Methode, wie Ihr Code annimmt.quelle
Ich benutze
distplot
undget_figure
um Bilder erfolgreich zu speichern.quelle
sns.distplot()
inpython 3.5.6
mitseaborn 0.9.0
. Außerdemsns.pairplot()
braucht die Funktion nicht die Zeile vonget_figure()
Weniger Zeilen für 2019-Suchende:
UPDATE HINWEIS:
size
wurde in geändertheight
.quelle
Das funktioniert bei mir
quelle
Es ist auch möglich, einfach ein matplotlib-
figure
Objekt zu erstellen und dann Folgendes zu verwendenplt.savefig(...)
:quelle
Sie würden einen Fehler bei der Verwendung
sns.figure.savefig("output.png")
in seaborn 0.8.1 erhalten.Verwenden Sie stattdessen:
quelle
Nur zu Ihrer Information, der folgende Befehl hat in seaborn 0.8.1 funktioniert, also denke ich, dass die erste Antwort immer noch gültig ist.
quelle