Saya mencoba kode berikut ( 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()
Tapi saya mendapatkan kesalahan ini:
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'
Saya berharap final output.png
akan ada dan terlihat seperti ini:
Bagaimana saya bisa menyelesaikan masalah?
python
pandas
matplotlib
seaborn
neversaint
sumber
sumber
Python 2.7.12
danseaborn 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')
Jawaban:
Hapus
get_figure
dan gunakan sajasns_plot.savefig('output.png')
sumber
AttributeError: 'AxesSubplot' object has no attribute 'savefig'
Solusi yang disarankan tidak kompatibel dengan Seaborn 0.8.1
memberikan kesalahan berikut karena antarmuka Seaborn telah berubah:
Panggilan berikut memungkinkan Anda untuk mengakses gambar (kompatibel Seaborn 0.8.1):
seperti yang terlihat sebelumnya dalam jawaban ini .
UPDATE: Saya baru-baru ini menggunakan objek PairGrid dari seaborn untuk menghasilkan plot yang mirip dengan yang ada dalam contoh ini . Dalam hal ini, karena GridPlot bukan objek plot seperti, misalnya, sns.swarmplot, ia tidak memiliki fungsi get_figure (). Dimungkinkan untuk secara langsung mengakses gambar matplotlib oleh
Seperti yang disarankan sebelumnya di posting lain di utas ini.
sumber
Beberapa solusi di atas tidak berhasil untuk saya. The
.fig
atribut tidak ditemukan ketika saya mencoba itu dan saya tidak mampu untuk menggunakan.savefig()
secara langsung. Namun, yang berhasil adalah:Saya adalah pengguna Python yang lebih baru, jadi saya tidak tahu apakah ini karena pembaruan. Saya ingin menyebutkannya kalau-kalau ada orang lain yang mengalami masalah yang sama seperti saya.
sumber
seaborn.swarmplot
, tetapi untukseaborn.lmplot
itu tidak akan berhasil. Denganseaborn.lmplot
, saya menemukansns_plot.savefig("output.png")
bekerja seperti dalam jawaban Salvatore, tetapi tanpa perluget_figure()
panggilan.Anda seharusnya hanya dapat menggunakan
savefig
metodesns_plot
langsung.Untuk kejelasan dengan kode Anda jika Anda ingin mengakses gambar matplotlib yang
sns_plot
berada di maka Anda bisa mendapatkannya langsung denganDalam hal ini tidak ada
get_figure
metode karena kode Anda mengasumsikan.sumber
Saya menggunakan
distplot
danget_figure
untuk menyimpan gambar dengan sukses.sumber
sns.distplot()
dipython 3.5.6
denganseaborn 0.9.0
. Selain itu, fungsisns.pairplot()
tidak perlu barisget_figure()
Lebih sedikit baris untuk 2019 pencari:
CATATAN PEMBARUAN:
size
telah diubah menjadiheight
.sumber
Ini bekerja untuk saya
sumber
Mungkin juga untuk hanya membuat
figure
objek matplotlib dan kemudian menggunakanplt.savefig(...)
:sumber
Anda akan mendapatkan kesalahan untuk menggunakan
sns.figure.savefig("output.png")
seaborn 0.8.1.Alih-alih gunakan:
sumber
Hanya FYI, perintah di bawah ini bekerja di seaborn 0.8.1 jadi saya kira jawaban awal masih valid.
sumber