Saya yakin saya melupakan sesuatu yang sangat sederhana, tetapi saya tidak dapat membuat plot tertentu untuk bekerja dengan Seaborn.
Jika aku melakukan:
import seaborn as sns
Kemudian setiap plot yang saya buat seperti biasa dengan matplotlib mendapatkan gaya Seaborn (dengan kotak abu-abu di latar belakang).
Namun, jika saya mencoba melakukan salah satu contoh, seperti:
In [1]: import seaborn as sns
In [2]: sns.set()
In [3]: df = sns.load_dataset('iris')
In [4]: sns.pairplot(df, hue='species', size=2.5)
Out[4]: <seaborn.axisgrid.PairGrid at 0x3e59150>
Fungsi pairplot mengembalikan objek PairGrid, tetapi plot tidak muncul.
Saya sedikit bingung karena matplotlib tampaknya berfungsi dengan baik, dan gaya Seaborn diterapkan pada plot matplotlib lainnya, tetapi fungsi Seaborn tampaknya tidak melakukan apa-apa. Adakah yang tahu apa masalahnya?
python
matplotlib
seaborn
robc89
sumber
sumber
%matplotlib inline
untuk menentukan backend inline. Kalau tidak, Anda bisa meneleponsns.plt.show()
untuk membuat plot ke jendela terpisah.Jawaban:
Plot yang dibuat menggunakan seaborn perlu ditampilkan seperti plot matplotlib biasa. Ini dapat dilakukan dengan menggunakan
fungsi dari matplotlib.
Awalnya saya memposting solusi untuk menggunakan objek matplotlib yang sudah diimpor dari seaborn (
sns.plt.show()
) namun ini dianggap praktik yang buruk. Oleh karena itu, cukup impor modul matplotlib.pyplot secara langsung dan perlihatkan plot AndaJika notebook IPython digunakan backend inline dapat dipanggil untuk menghapus perlunya memanggil acara setelah setiap plot. Sihir masing-masing adalah
sumber
%matplotlib qt
,%matplotlib gtk
,%matplotlib tk
dll lihat%matplotlib?
untuk informasi lebih lanjut%matplotlib inline
ke beberapa file konfigurasi sehingga selalu diterapkan? Atau apakah saya selalu perlu menambahkannya ke setiap buku kerja baru?Saya sampai pada pertanyaan ini secara teratur dan saya selalu membutuhkan waktu untuk menemukan apa yang saya cari:
Harap dicatat: Dalam Python 2, Anda juga dapat menggunakan
sns.plt.show()
, tetapi tidak dalam Python 3.Contoh Lengkap
Memberi
sumber
AttributeError: module 'seaborn' has no attribute 'plt'
sns.plt
Untuk menghindari kebingungan (sepertinya ada beberapa di komentar). Dengan asumsi Anda berada di Jupyter:
%matplotlib inline
> menampilkan plot DI DALAM notebooksns.plt.show()
> menampilkan plot DI LUAR notebook%matplotlib inline
akan OVERRIDEsns.plt.show()
dalam arti bahwa plot akan ditampilkan DI notebook bahkan ketikasns.plt.show()
dipanggil.Dan ya, mudah untuk memasukkan baris ke konfigurasi Anda:
Secara otomatis menjalankan% matplotlib inline di IPython Notebook
Tetapi tampaknya konvensi yang lebih baik untuk tetap bersama dengan impor dalam kode aktual.
sumber
Ini berhasil untuk saya
sumber
Saran saya hanya memberi a
plt.figure()
dan berikan beberapa plot sns. Sebagai contohsns.distplot(data)
.Meskipun akan terlihat tidak menunjukkan plot apa pun, Ketika Anda memaksimalkan gambar, Anda akan dapat melihat plot.
sumber
plt.figure()
) sebelum membuat lineplot saya dan tidak mengerti mengapa plotnya tidak muncul. Luar biasa terima kasih!Jika Anda merencanakan di konsol IPython (di mana Anda tidak dapat menggunakan
%matplotlib inline
) alih-alih notebook Jupyter, dan tidak ingin menjalankanplt.show()
berulang kali, Anda dapat memulai konsol IPython denganipython --pylab
:sumber
Dari gaya potongan kode Anda, saya kira Anda menggunakan IPython daripada Jupyter Notebook.
Dalam edisi ini di GitHub, diperjelas oleh anggota IPython pada tahun 2016 bahwa tampilan grafik hanya akan berfungsi ketika "hanya berfungsi jika kernel Jupyter". Dengan demikian,
%matplotlib inline
tidak akan berhasil.Saya baru saja mengalami masalah yang sama dan menyarankan Anda menggunakan Jupyter Notebook untuk visualisasi.
sumber