Saya sangat suka menggunakan matplotlib
dalam gaya OOP:
f, axarr = plt.subplots(2, sharex=True)
axarr[0].plot(...)
axarr[1].plot(...)
Ini membuatnya lebih mudah untuk melacak beberapa gambar dan subplot.
Pertanyaan: Bagaimana cara menggunakan seaborn dengan cara ini? Atau, bagaimana cara mengubah contoh ini menjadi gaya OOP? Bagaimana cara mengetahui seaborn
fungsi plot seperti lmplot
yang mana Figure
atau Axes
itu plot?
python
oop
matplotlib
seaborn
Api Beku
sumber
sumber
Jawaban:
Itu sedikit tergantung pada fungsi dasar laut yang Anda gunakan.
Fungsi plotting di seaborn secara luas dibagi menjadi dua kelas
regplot
,boxplot
,kdeplot
, dan banyak lainnyalmplot
,factorplot
,jointplot
dan satu atau dua orang lainGrup pertama diidentifikasi dengan mengambil
ax
argumen eksplisit dan mengembalikanAxes
objek. Seperti yang disarankan, Anda dapat menggunakannya dalam gaya "berorientasi objek" dengan meneruskannyaAxes
kepada mereka:Fungsi tingkat sumbu hanya akan menggambar ke
Axes
dan tidak akan mengacaukan gambar, sehingga mereka dapat hidup berdampingan dengan bahagia dalam skrip matplotlib berorientasi objek.Fungsi kelompok kedua (Tingkat gambar) dibedakan oleh fakta bahwa plot yang dihasilkan berpotensi mencakup beberapa Sumbu yang selalu diatur dengan cara yang "bermakna". Itu berarti bahwa fungsi harus memiliki kontrol penuh atas gambar tersebut, jadi tidak mungkin untuk merencanakan, katakanlah,
lmplot
ke salah satu yang sudah ada. Memanggil fungsi selalu menginisialisasi gambar dan menyiapkannya untuk plot spesifik yang digambarnya.Namun, setelah Anda menelepon
lmplot
, itu akan mengembalikan objek tipeFacetGrid
. Objek ini memiliki beberapa metode operasi pada plot yang dihasilkan yang mengetahui sedikit tentang struktur plot. Ini juga mengekspos gambar yang mendasari dan array sumbu diFacetGrid.fig
danFacetGrid.axes
argumen. Thejointplot
Fungsi ini sangat mirip, tetapi menggunakanJointGrid
objek. Jadi Anda masih dapat menggunakan fungsi-fungsi ini dalam konteks berorientasi objek, tetapi semua penyesuaian Anda harus dilakukan setelah Anda memanggil fungsi tersebut.sumber