Cara menggunakan SUBPLOT pada Python

Pada artikel Kali ini kita akan Berkenalan Dengan Seaborn Python, yaitu salah satu library pada Python untuk visualisasi data. Libary ini sangat berguna ketika Anda bekerja untuk memahami suatu data yang sederhana maupun kompleks. Oleh karena itu, tunggu apalagi. Mari kita membahas mengenai Seaborn.

Seaborn adalah library untuk membuat grafik dan statistik dengan menggunakan Python. Library ini di bangun berdasarkan library matplotlib serta terintegrasi dengan struktur data pada panda.

Berikut adalah beberapa fungsi yang dapat di lakukan oleh seaborn:

  • API berorientasi set data untuk memeriksa hubungan antara beberapa variabel
  • Dukungan khusus untuk menggunakan variabel kategori untuk menunjukkan observasi atau statistik agregat
  • Pilihan untuk memvisualisasikan distribusi univarian atau bivarian dan untuk membandingkannya di antara subkumpulan data
  • Estimasi otomatis dan plot model regresi linier untuk berbagai jenis variabel dependen
  • Tampilan yang nyaman pada keseluruhan struktur kumpulan data yang kompleks
  • Abstraksi tingkat tinggi untuk menyusun kisi multi-plot yang memungkinkan Anda membuat - visualisasi kompleks dengan mudah
  • Kontrol yang simple untuk styling gambar matplotlib dengan beberapa tema bawaan
  • Tool untuk memilih palet warna untuk menampilkan pola sesuai denga aslinya dalam data Anda

Seaborn bertujuan agar visualisasi menjadi bagian penting dari proses eksplorasi dan pemahaman data. Seaborn berorientasi pada fungsi plotting berdasarkan dataset yang beroperasi pada 

import matplotlib.pyplot as plt
plt.show()
6 dan array yang berisi seluruh dataset yang secara internal melakukan pemetaan semantik dan agregasi statistik yang diperlukan untuk menghasilkan grafik informatif.

Instalasi Seaborn

Instalasi Seaboard dapat dilakukan dengan dua cara yaitu:

Atau jika Anda menggunakan Anaconda distribution

 Dependencies

Ada beberapa dependencies yang perlu diperhatikan sebelum menjalankan seaborn pada komputer/laptop Anda.

Diantaranya:

optional:

Memulai Seaborn

Setelah Anda selesai menginstall Seaborn, maka saat nya untuk berkenalan dengan seaborn Python. Seaborn memiliki contoh dataset yang dapat Anda coba. Untuk memulainya silahkan eksekusi perintah ini. (Anda dapat menggunakan Jupyter notebook atau Python IDE lainnya, pada artikel ini, pada artikel ini adalah menggunakan Jupyter Notebook karena kelebihannya dapat di eksekusi pada cell dan menampilkan hasilnya pada cell dibawahnya).

import seaborn as sns
df = sns.load_dataset("penguins")
sns.pairplot(df, hue="species")

Jika Anda menggunakan Jupyter Notebook, pastikan menyalakan matplotlib mode untuk dapat langsung melihat hasilnya. Namun, jika tidak Anda harus memanggil fungsi 

import matplotlib.pyplot as plt
plt.show()
7 di bawah nya. Perintah nya adalah:

import matplotlib.pyplot as plt
plt.show()

Overview Fungsi Plot Pada Seaborn

Semakin sering Anda berinteraksi dan berkenalan dengan seaborn Python, maka Anda akan melihat serangkaian fungsi plot. Pada artikel selanjutnya kita akan mengeksplorasi fitur spesifik yang dapat dilakukan oleh masing-masing fungsi. Artikel ini hanya akan memperkenalkan kepada Anda mengenai berbagai jenis fungsi yang akan Anda hadapi dalam menggunakan Seaborn.

Fungsi Sama Untuk Tugas Serupa

Penamaan pada Seaborn adalah flat; seluruh fungsionalitas dapat di akses di dengan sederhana. Sebenarnya, kode pada Seaborn itu sendiri terstruktur secara hierarki, dengan fungsi modul untuk mencapai tujuan visualisasi serupa dengan cara yang berbeda. Pada sebagian besar dokumentasi mengenai seaborn yang telah di susun oleh para maintenernya. Maka, Anda akan menemukan nama-nama seperti "relasional", "distribusi", dan "kategorikal".

Sebagai contoh,  untuk mendefinisikan fungsi-fungsi yang memiliki spesialisasi dalam merepresentasikan distribusi data. Termasuk metode yang sudah kita kenal kenal dengan baik seperti histogram:

penguins = sns.load_dataset("penguins")
sns.histplot(data=penguins, x="flipper_length_mm", hue="species", multiple="stack")

Berkenalan Dengan Seaborn Python - Modul DistribusiBerkenalan Dengan Seaborn Python - Modul Distribusi

Bersamaan dengan opsi yang sama, namun mungkin kita kurang familiar, seperti pada contoh kernel density estimation :

Berkenalan Dengan Seaborn Python  - KDE PlotBerkenalan Dengan Seaborn Python - KDE Plot

Fungsi yang berada di dalam modul memiliki banyak kode yang mendasari dan menawarkan fitur serupa yang mungkin tidak ada pada komponen lain dari library (seperti 

import matplotlib.pyplot as plt
plt.show()
8 pada contoh di atas). Library ini dirancang untuk memfasilitasi peralihan di antara representasi visual yang berbeda saat Anda menelusuri kumpulan data, karena representasi yang berbeda sering kali memiliki kekuatan dan kelemahan yang saling melengkapi.

Fungsi Figure-Level vs Axes-Level

Selain dengan modul yang berbeda, ada yang dinamakan cross-cutting classification dari fungsi Seaborn sebagai "axes-level" atau "figure-level". Contoh di atas adalah fungsi "axes-level". Fungsi ini untuk membuat plot data ke dalam satu object 

import matplotlib.pyplot as plt
plt.show()
9, yang merupakan nilai dari fungsi tersebut.

Sebaliknya, "figure-level" berinterface dengan matplotlib melalui objek seaborn, biasanya adala 

penguins = sns.load_dataset("penguins")
sns.histplot(data=penguins, x="flipper_length_mm", hue="species", multiple="stack")
0, yang mengelola suatu gambar. Setiap modul memiliki fungsi "figure-level" tunggal, yang menawarkan satu antarmuka ke dalam berbagai fungsi "axes-level".

Sebagai contoh, 

penguins = sns.load_dataset("penguins")
sns.histplot(data=penguins, x="flipper_length_mm", hue="species", multiple="stack")
1 adalah fungsi "figure-level" untuk modul distribusi. Secara default adalah untuk menggambar suatu histogram, menggunakan kode yang sama seperti pada histplot():

sns.displot(data=penguins, x="flipper_length_mm", hue="species", multiple="stack")

Berkenalan Dengan Seaborn Python - DisplotBerkenalan Dengan Seaborn Python - Displot

Untuk membuat 

penguins = sns.load_dataset("penguins")
sns.histplot(data=penguins, x="flipper_length_mm", hue="species", multiple="stack")
2, Anda dapat menggunakan kode yang sama seperti pada 
penguins = sns.load_dataset("penguins")
sns.histplot(data=penguins, x="flipper_length_mm", hue="species", multiple="stack")
3, lalu pilih menggunakan parameter kind parameter
penguins = sns.load_dataset("penguins")
sns.histplot(data=penguins, x="flipper_length_mm", hue="species", multiple="stack")
4:

sns.displot(data=penguins, x="flipper_length_mm", hue="species", multiple="stack", kind="kde")

Berkenalan Dengan Seaborn Python - Displot KDEBerkenalan Dengan Seaborn Python - Displot KDE

Anda akan melihat bahwa plot figure-level sebagian besar terlihat seperti pada axes-level, namun ada beberapa perbedaan. Terutama pada penempatan posisi legenda yang berada di luar plot. Selain itu, mereka pun memiliki bentuk yang sedikit berbeda

Fitur yang paling berguna pada fungsi figure-level adalah kemudahannya dalam mebuat gambar dengan banyak sub-plot.. Misalnya, dibanding menumpukkan tiga plot distribusi untuk setiap spesies penguin dalam satu sumbu yang sama, kita dapat memisahkannya dengan memplot setiap distribusi pada seluruh kolom gambar, seperti pada contoh di bawah ini:

sns.displot(data=penguins, x="flipper_length_mm", hue="species", col="species")

Berkenalan Dengan Seaborn Python - Multiple SubplotBerkenalan Dengan Seaborn Python - Multiple Subplot

Fungsi figure-level membungkus axes-level, lalu meneruskan argumen kata kunci yang spesifik (seperti ukuran bin pada histogram) kepada fungsi yang mendasarinya. Ini berarti mereka cukup fleksibel, namun ada sisi negatifnya, yaitu: parameter khusus ini tidak muncul pada docstrings. Beberapa fitur mungkin sulit untuk dapat ditemukan, Anda mungkin perlu melihat d dokumentasi yang lengkap sebelum memahami bagaimana cara untuk mencapai tujuan tertentu dalam penggunaannya.

Fungsi axes-level membuat plot self-contained

Fungsi axes-level memiliki kemampuan untuk bertindak sebagai pengganti drop-in pada fungsi yang terdapat pada matplotlib. Fungsi ini dapat menambahkan label pada sumbu dan legenda secara otomatis tanpa mengubah apa pun di luar sumbu tempat mereka ditarik. Ini berarti fungsi tersebut dapat disusun menjadi angka kompleks pada matplotlib dengan hasil yang dapat di prediksi.

Fungsi axes-level memanggil secara internal pada 

penguins = sns.load_dataset("penguins")
sns.histplot(data=penguins, x="flipper_length_mm", hue="species", multiple="stack")
5, yang menghubungkan ke interface "state-machine" pada matplotlib. Sehingga, plot akan di gambar pada sumbu "currently-active". Selain itu, mereka pun menerima 
penguins = sns.load_dataset("penguins")
sns.histplot(data=penguins, x="flipper_length_mm", hue="species", multiple="stack")
6 argumen, yang terintegrasi dengan interface berorientasi objek, serta memungkinkan Anda untuk menentukan dengan tepat ke mana arah plot harus pergi:

f, axs = plt.subplots(1, 2, figsize=(8, 4), gridspec_kw=dict(width_ratios=[4, 3]))
sns.scatterplot(data=penguins, x="flipper_length_mm", y="bill_length_mm", hue="species", ax=axs[0])
sns.histplot(data=penguins, x="species", hue="species", shrink=.8, alpha=.8, legend=False, ax=axs[1])
f.tight_layout()

Berkenalan Dengan Seaborn Python - Scatter Plot dan histplotBerkenalan Dengan Seaborn Python - Scatter Plot dan histplot

Fungsi figure-level

Sebaliknya, fungsi figure-level tidak dapat (dengan mudah) di buat dengan menggunakan plot lain. Secara desain, fungsi ini "memiliki" gambar mereka sendiri, termasuk inisialisasi, sehingga tidak ada disarankan untuk menggunakan fungsi figure-level dalam menggambar plot kepada sumbu yang ada. Keterbatasan ini memungkinkan fungsi figure-level untuk mengimplementasikan fitur lain seperti meletakkan legenda di luar plot.

Namun demikian, ada kemungkinan untuk melampaui fungsi yang terdapat pada figure-level dengan cara mengakses sumbu matplotlib pada objek yang dikembalikan, lalu menambahkan elemen lain ke dalam plot seperti ini:

import matplotlib.pyplot as plt

tips = sns.load_dataset("tips")
g = sns.relplot(data=tips, x="total_bill", y="tip")

x = np.linspace(0, 10, 100)
plt.plot(x, x + 1, linestyle='dashed', color="r")

Berkenalan Dengan Seaborn Python  - Figure plot dan matplotlibBerkenalan Dengan Seaborn Python - Figure plot dan matplotlib

Menyesuaikan plot dari fungsi figure-level

Fungsi figure-level menghasilkan sebuah 

penguins = sns.load_dataset("penguins")
sns.histplot(data=penguins, x="flipper_length_mm", hue="species", multiple="stack")
0 instance, yang memiliki beberapa metode untuk menyesuaikan atribut plot dengan cara pengorganisasian subplot. Misalnya, Anda dapat mengubah label pada sumbu eksternal hanya denga menggunakan satu baris kode:

g = sns.relplot(data=penguins, x="flipper_length_mm", y="bill_length_mm", col="sex")
g.set_axis_labels("Panjang Flipper (mm)", "Panjang Bill (mm)")

Berkenalan Dengan Seaborn Python  - Relabelling AxisBerkenalan Dengan Seaborn Python- Relabelling Axis

Meskipun mudah, hal ini menambahkan sedikit kerumitan, karena Anda perlu ingat bahwa metode ini bukan bagian dari API matplotlib dan hanya ada pada saat menggunakan fungsi figure-level.

Menentukan ukuran gambar

Untuk menambah atau mengurangi ukuran plot pada matplotlib, Anda dapat mengatur lebar dan tinggi dari seluruh gambar, baik ketika di dalam rcParams global, ketika sedang menyiapkan plot (misalnya dengan parameter 

penguins = sns.load_dataset("penguins")
sns.histplot(data=penguins, x="flipper_length_mm", hue="species", multiple="stack")
8 dari 
penguins = sns.load_dataset("penguins")
sns.histplot(data=penguins, x="flipper_length_mm", hue="species", multiple="stack")
9), atau dengan memanggil metode pada objek gambar (misalnya 
sns.displot(data=penguins, x="flipper_length_mm", hue="species", multiple="stack")
0 ). Saat menggunakan fungsi axes-level pada Seaborn, aturan yang sama akan berlaku, yaitu: ukuran plot ditentukan oleh ukuran gambar yang menjadi bagiannya dan layout sumbu pada gambar tersebut.

Saat menggunakan fungsi figure-level, ada beberapa perbedaan utama. Pertama, fungsi itu sendiri memiliki parameter untuk mengontrol ukuran gambar. Kedua, 

sns.displot(data=penguins, x="flipper_length_mm", hue="species", multiple="stack")
1 dan 
sns.displot(data=penguins, x="flipper_length_mm", hue="species", multiple="stack")
2, memiliki parameter ukuran sedikit berbeda dibandingkan 
sns.displot(data=penguins, x="flipper_length_mm", hue="species", multiple="stack")
3. Parameter 
sns.displot(data=penguins, x="flipper_length_mm", hue="species", multiple="stack")
1 dalam matplotlib (menggunakan parameter pada seaborn, 
sns.displot(data=penguins, x="flipper_length_mm", hue="species", multiple="stack")
5). Yang paling perlu diperhatikan adalah, parameter tersebut sesuai dengan ukuran setiap subplot , bukan ukuran gambar secara keseluruhan

Untuk mengilustrasikan perbedaan antara kedua pendekatan ini, berikut adalah output default dari  dengan satu subplot:

Berkenalan Dengan Seaborn Python - Subplot kosongBerkenalan Dengan Seaborn Python - Subplot kosong

f, ax = plt.subplots(1, 2, sharey=True)

Berkenalan Dengan Seaborn Python - 2 subplot kosong share yBerkenalan Dengan Seaborn Python - 2 subplot kosong share y

Sebaliknya, plot yang dibuat oleh fungsi figure-level akan berbentuk persegi. Untuk mendemonstrasikannya, mari kita membuat plot kosong dengan menggunakan 

penguins = sns.load_dataset("penguins")
sns.histplot(data=penguins, x="flipper_length_mm", hue="species", multiple="stack")
0 secara langsung. Hal ini terjadi di balik layar dalam fungsi seperti 
sns.displot(data=penguins, x="flipper_length_mm", hue="species", multiple="stack")
7 atau 
sns.displot(data=penguins, x="flipper_length_mm", hue="species", multiple="stack")
8:

import matplotlib.pyplot as plt
plt.show()
0

Berkenalan Dengan Seaborn Python - Plot Face GridBerkenalan Dengan Seaborn Python - Plot Face Grid

Ketika menambahkan kolom, gambar tersebut akan menjadi lebih lebar, sehingga subplotnya akan memiliki ukuran dan bentuk yang sama:

import matplotlib.pyplot as plt
plt.show()
1

Berkenalan Dengan Seaborn Python - Dua Kolom Face GridBerkenalan Dengan Seaborn Python - Dua Kolom Face Grid

Dan Anda dapat menyesuaikan ukuran dan bentuk setiap subplot tanpa memperhitungkan jumlah total baris dan kolom pada gambar:

import matplotlib.pyplot as plt
plt.show()
2

Berkenalan Dengan Seaborn Python - Dua kolom facegrid dengan ukuran customBerkenalan Dengan Seaborn Python - Dua kolom facegrid dengan ukuran custom

Hasilnya adalah Anda dapat menetapkan variabel 

sns.displot(data=penguins, x="flipper_length_mm", hue="species", multiple="stack")
9 tanpa berhenti memikirkan tentang bagaimana Anda perlu menyesuaikan ukuran gambar total. Kelemahannya adalah, ketika Anda ingin mengubah ukuran gambar, Anda perlu mengingat bahwa segala sesuatunya bekerja sedikit berbeda dari yang dilakukan oleh matplotlib.

 Kelebihan relatif dari fungsi figure-level

KeuntunganKekuranganFaceting mudah oleh variabel dataBanyak parameter tidak ada dalam tanda tangan fungsiLegenda di luar plot secara defaultTidak boleh menjadi bagian dari gambar matplotlib yang lebih besarKustomisasi tingkat gambar yang mudahAPI berbeda dari matplotlib

Selain itu, fungsi figure-level memiliki beberapa kompleksitas tambahan yang dapat membuat hal-hal menjadi lebih membingungkan bagi pemula. Namun, dengan fitur-fitur yang berbeda, memberinya keunggulan tambahan. Dokumentasi resmi tutorial dari Seaborn, sebagian besar menggunakan fungsi figure-level, karena fungsi tersebut menghasilkan plot yang lebih bersih, dan direkomendasikan untuk digunakan pada aplikasi yang lebih besar lagi. Satu situasi di mana fungsi ini bukan pilihan yang baik adalah ketika Anda perlu membuat sesuatu yang kompleks dan mandiri untuk menyusun berbagai jenis plot yang berbeda. Pada titik ini, disarankan untuk menyiapkan gambar dengan menggunakan matplotlib secara langsung dan mengisi masing-masing komponen menggunakan fungsi axis-level.

Menggabungkan beberapa tampilan pada data

Dua fungsi pembuatan plot yang penting pada Seaborn tidak cocok dengan skema klasifikasi yang telah di bahas pada bagian sebelumnya. Fungsi-fungsi ini,  dan  , menggunakan berbagai jenis plot dari modul yang berbeda untuk merepresentasikan berbagai aspek kumpulan data dalam satu gambar. Kedua plot terserbut adalah fungsi figure-level dan membuat gambar dengan jumlah subplot yang banyak secara default. Namun keduanya menggunakan objek yang berbeda dalam mengelola gambar:  dan .

 berfungsi untuk memplot hubungan atau distribusi gabungan dua variabel sambil menambahkan sumbu marginal yang menunjukkan distribusi univarian dari masing-masing variabel secara terpisah:

import matplotlib.pyplot as plt
plt.show()
3

Berkenalan Dengan Seaborn Python - Join plotBerkenalan Dengan Seaborn Python - Join plot

Sama seperti hal nya pada  - Fungsi ini menggabungkan gambar gabungan dan marginal - Tidak hanya terfokus pada satu hubungan antar data, melainkan memvisualisasikan setiap kombinasi secara bersamaan.

import matplotlib.pyplot as plt
plt.show()
4

Berkenalan Dengan Seaborn Python - Pair PlotBerkenalan Dengan Seaborn Python - Pair Plot

Di belakang layar, fungsi ini menggunakan fungsi axes-level yang telah Anda temui pada  dan . Fungsi ini pun memiliki parameter 

penguins = sns.load_dataset("penguins")
sns.histplot(data=penguins, x="flipper_length_mm", hue="species", multiple="stack")
4yang memungkinkan Anda dengan cepat menukarnya ke dalam representasi yang berbeda:

import matplotlib.pyplot as plt
plt.show()
5

Berkenalan Dengan Seaborn Python - Join plot 2Berkenalan Dengan Seaborn Python - Join plot 2

Kesimpulan

Pada artikel ini Anda telah berkenalan dengan seaborn Python, yang merupakan salah satu library yang paling sering digunakan untuk visualisasi data menggunakan Python. Anda telah mengetahui beberapa fungsi dasar pada library ini. Namun, masih banyak yang akan kita bahas pada website ini mengenai Seaborn. Oleh karena itu, tetap datangi website ini untuk mendapatkan update terbaru dan tidak terlewatkan.

Apa fungsi syntax subplot pada python?

plt.subplot digunakan untuk membuat multiple plots yang memiliki weight dan height yang sama.

Apa itu figure dalam matplotlib?

Figure adalah objek matplotlib yang mengandung semua elemen dari sebuah grafik, sedangkan Axes merupakan tempat dimana method untuk plotting didefinisikan, termasuk method untuk membuat dan memanipulasi garis axis, grid, label tick, ataupun background.

Apa yang dimaksud Line Plot?

Selain itu, line plot yaitu jenis grafik untuk menampilkan informasi dengan menggunakan banyak titik yang saling terhubung dan membentuk garis lurus atau lengkung.