Je crée un boxplot comme ci-dessous

import seaborn as sns
sns.set_style("whitegrid")
tips = sns.load_dataset("tips")
ax = sns.boxplot(x=tips["total_bill"])

& essayez d'enregistrer

sns.boxplot.savefig('ax.png')

Ou

ax.savefig('ax.png')

Mais

AttributeError: 'AxesSubplot' object has no attribute 'savefig'

C'est surprenant, car c'est correct pour lmplot etc ...

3
Edward 7 mars 2016 à 12:18

3 réponses

Meilleure réponse

Une option consiste à générer d'abord la figure et les axes de matplotlib

import matplotlib.pyplot as plt
fig, ax = plt.subplots()

Ensuite, effectuez tous les tracés dont vous avez besoin avec Seaborn, en spécifiant les axes à utiliser, par ex.

sns.boxplot('A', 'B', data=your_dataframe, ax=ax) 

Et enfin enregistrer de la manière habituelle

plt.savefig('your_figure.png')
8
ricoamor 4 avril 2016 à 09:33

lmplot ne renvoie pas d'instance AxesSubplot, boxplot le fait. Vous pouvez obtenir le chiffre auquel ax appartient, puis savefig:

ax.get_figure().savefig('ax.png')
3
Stop harming Monica 7 mars 2016 à 09:32

Utilisez sns.plt pour enregistrer les images.

sns.plt.clf()
sns.boxplot(x=tips["total_bill"])
sns.plt.savefig('ax.png')
0
Xue Ye 6 sept. 2016 à 21:03