J'ai essayé le code suivant ( test_seaborn.py
):
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()
Mais j'obtiens cette erreur:
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'
J'espère que la finale output.png
existera et ressemblera à ceci:
Comment puis-je résoudre le problème?
python
pandas
matplotlib
seaborn
Neversaint
la source
la source
Python 2.7.12
etseaborn 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')
Réponses:
Retirez le
get_figure
et utilisez simplementsns_plot.savefig('output.png')
la source
AttributeError: 'AxesSubplot' object has no attribute 'savefig'
Les solutions proposées sont incompatibles avec Seaborn 0.8.1
donnant les erreurs suivantes car l'interface Seaborn a changé:
Les appels suivants vous permettent d'accéder à la figure (compatible Seaborn 0.8.1):
comme vu précédemment dans cette réponse .
MISE À JOUR: J'ai récemment utilisé l'objet PairGrid de seaborn pour générer un tracé similaire à celui de cet exemple . Dans ce cas, puisque GridPlot n'est pas un objet de tracé comme, par exemple, sns.swarmplot, il n'a pas de fonction get_figure (). Il est possible d'accéder directement à la figure matplotlib en
Comme suggéré précédemment dans d'autres articles de ce fil.
la source
Certaines des solutions ci-dessus n'ont pas fonctionné pour moi. L'
.fig
attribut n'a pas été trouvé lorsque j'ai essayé cela et je n'ai pas pu l'utiliser.savefig()
directement. Cependant, ce qui a fonctionné était:Je suis un nouvel utilisateur de Python, donc je ne sais pas si cela est dû à une mise à jour. Je voulais le mentionner au cas où quelqu'un d'autre rencontrerait les mêmes problèmes que moi.
la source
seaborn.swarmplot
, mais pourseaborn.lmplot
cela ne fonctionnera pas. Avecseaborn.lmplot
, j'ai trouvésns_plot.savefig("output.png")
travaillé comme dans la réponse de Salvatore, mais sansget_figure()
appel.Vous devriez simplement pouvoir utiliser la
savefig
méthode desns_plot
directement.Pour plus de clarté avec votre code, si vous souhaitez accéder à la figure matplotlib qui
sns_plot
réside, vous pouvez l'obtenir directement avecDans ce cas, il n'y a pas de
get_figure
méthode comme le suppose votre code.la source
J'utilise
distplot
etget_figure
pour enregistrer l'image avec succès.la source
sns.distplot()
enpython 3.5.6
avecseaborn 0.9.0
. En outre, la fonctionsns.pairplot()
n'a pas besoin de la ligne deget_figure()
Moins de lignes pour les chercheurs de 2019:
NOTE DE MISE À JOUR: a
size
été changé enheight
.la source
Cela fonctionne pour moi
la source
Il est également possible de créer simplement un
figure
objet matplotlib puis d'utiliserplt.savefig(...)
:la source
Vous obtiendrez une erreur pour l'utilisation
sns.figure.savefig("output.png")
dans seaborn 0.8.1.Utilisez plutôt:
la source
Juste pour info, la commande ci-dessous fonctionnait dans seaborn 0.8.1 donc je suppose que la réponse initiale est toujours valable.
la source