2016-01-12 9 views
6

Mam pandasową ramkę danych Pand i próbuję zapisać działkę w pliku png. Wydaje się jednak, że coś nie działa tak, jak powinno. To jest mój kod:Jak zapisać fabułę w Seaborn z Pythonem

import pandas 
import matplotlib.pyplot as plt 
import seaborn as sns 

sns.set(style='ticks') 

df = pandas.read_csv("this_is_my_csv_file.csv") 
plot = sns.distplot(df[['my_column_to_plot']]) 
plot.savefig("myfig.png") 

I mam ten błąd:

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

Odpowiedz

3

można użyć plt.savefig ponieważ obraz pojawi się kiedy zadzwonisz plt.show()

+0

Rzeczywiście. Wydaje się, że to praca. Myślałem, że widziałem to w samouczku z nazwą zmiennej, a nie 'plt'. Dziękuję – Tasos

+0

@ Tasos może to być, że stworzyli obiekt Figure, z 'fig = plt.Figure()'. Następnie możesz zapisać figurę za pomocą 'rys.savefig()' – Mathias711

+0

@ Mathias711 O tak. To ma sens. Użyłem kilku samouczków, aby zrobić to, co chciałem i prawdopodobnie jeden z nich miał tędy. – Tasos

0

Korzystając plt.savefig('yourTitle.png')

Jeśli chcesz przekazać zmienną:

plt.savefig("yourTitleDataSet{0}.png".format(dataset)) 
10

Możesz uratować dowolną postać z seaborn w ten sposób.

Załóżmy, że chcesz utworzyć wykres skrzypiec, aby pokazać rozkład zarobków pod względem płci. Możesz zrobić to w ten sposób i zapisać go za pomocą metody get_figure.

ax = sns.violinplot(x="Gender", y="Salary", hue="Degree", data=job_data) 
#Returns the :class:~matplotlib.figure.Figure instance the artist belongs to 
fig = ax.get_figure() 
fig.savefig('gender_salary.png') 
+0

Dzięki za korektę Tunaki :) –