Plot Kategorikal: boxplot, barplot, violinplot
Bandingkan distribusi antargrup dengan plot kotak dan plot biola, lalu plot rata-rata grup dengan batang galat menggunakan barplot.
Plot Kategorikal: boxplot, barplot, violinplot adalah pelajaran Pandas & NumPy Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Pandas & NumPy Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.
Mengapa Menggunakan Plot Perbandingan Kategorikal?
Saat Anda ingin membandingkan variabel numerik di berbagai kategori—misalnya, tip yang diterima berdasarkan hari dalam minggu atau harga produk berdasarkan merek—Anda memerlukan plot khusus. Seaborn menyediakan tiga plot perbandingan kategorikal utama: boxplot, barplot, dan violinplot. Masing-masing menampilkan aspek distribusi yang berbeda dan sesuai untuk tujuan analisis yang berbeda.
import seaborn as sns
import matplotlib.pyplot as plt
# Load the tips dataset — a classic Seaborn example
tips = sns.load_dataset('tips')
print(tips.groupby('day')['total_bill'].describe())Plot Kotak dengan sns.boxplot
Plot kotak merangkum distribusi menggunakan lima statistik: nilai minimum, kuartil pertama (Q1), median, kuartil ketiga (Q3), dan nilai maksimum (tidak termasuk pencilan). Kotak membentang dari Q1 hingga Q3 (rentang antarkuartil, IQR), garis di dalam kotak adalah median, dan garis kumis memanjang hingga 1,5×IQR. Titik di luar garis kumis digambarkan secara terpisah sebagai pencilan. Plot kotak sangat baik untuk menemukan kecondongan dan pencilan secara sekilas.
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset('tips')
sns.boxplot(data=tips, x='day', y='total_bill', order=['Thur', 'Fri', 'Sat', 'Sun'])
plt.title('Total Bill Distribution by Day')
plt.xlabel('Day')
plt.ylabel('Total Bill ($)')
plt.show()Menambahkan Hue ke Plot Kotak
Parameter hue membagi setiap kategori menjadi subkelompok yang ditampilkan berdampingan dengan warna berbeda. Misalnya, menambahkan hue='smoker' ke plot kotak tagihan berdasarkan hari akan menampilkan dua kotak per hari—satu untuk perokok dan satu untuk bukan perokok. Hal ini memperjelas perbandingan tiga variabel tanpa memerlukan faset. Gunakan legenda agar plot tetap mudah dibaca.
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset('tips')
sns.boxplot(
data=tips,
x='day',
y='total_bill',
hue='smoker',
order=['Thur', 'Fri', 'Sat', 'Sun'],
palette='Set2'
)
plt.title('Bill by Day and Smoker Status')
plt.legend(title='Smoker')
plt.show()Plot Batang dengan sns.barplot
sns.barplot() menampilkan mean variabel numerik untuk setiap kategori, dengan batang galat yang secara bawaan mewakili interval kepercayaan 95% (dihitung melalui bootstrap pada versi Seaborn yang lebih lama, atau dari galat baku pada versi yang lebih baru). Berbeda dari histogram, plot batang merangkum setiap kelompok menjadi satu nilai—plot ini paling sesuai ketika Anda memperhatikan rata-rata dan ketidakpastiannya, bukan bentuk distribusi secara keseluruhan.
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset('tips')
# Show mean tip per day with 95% CI
sns.barplot(
data=tips,
x='day',
y='tip',
order=['Thur', 'Fri', 'Sat', 'Sun'],
palette='Blues_d',
errorbar='ci'
)
plt.title('Average Tip by Day (with 95% CI)')
plt.ylabel('Average Tip ($)')
plt.show()Plot Biola dengan sns.violinplot
Plot biola menggabungkan plot kotak dengan kurva KDE yang dicerminkan di kedua sisi. Lebar biola pada setiap nilai y menunjukkan kepadatan data pada titik tersebut—bagian yang lebar memiliki banyak pengamatan, sedangkan bagian yang sempit memiliki sedikit pengamatan. Plot biola menyampaikan lebih banyak informasi daripada plot kotak karena menunjukkan apakah distribusinya unimodal atau multimodal, tetapi memerlukan lebih banyak data agar bermakna (usahakan n > 20 per kelompok).
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset('tips')
sns.violinplot(
data=tips,
x='day',
y='total_bill',
order=['Thur', 'Fri', 'Sat', 'Sun'],
palette='pastel',
inner='quartile' # show quartile lines inside the violin
)
plt.title('Bill Distribution by Day — Violin Plot')
plt.show()Parameter inner pada violinplot
Parameter inner dari violinplot mengatur apa yang digambar di dalam bentuk biola. Opsinya mencakup 'box' (plot kotak mini), 'quartile' (garis horizontal pada Q1, median, Q3), 'point' (titik data individual), dan 'stick' (tanda centang vertikal untuk setiap pengamatan). Menetapkan inner=None hanya menggambar selubung kepadatan tanpa tanda internal, sehingga tampilannya paling bersih untuk perbandingan berdampingan.
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset('tips')
fig, axes = plt.subplots(1, 2, figsize=(12, 5))
sns.violinplot(data=tips, x='smoker', y='tip',
inner='box', ax=axes[0])
axes[0].set_title('inner="box"')
sns.violinplot(data=tips, x='smoker', y='tip',
inner='point', ax=axes[1])
axes[1].set_title('inner="point"')
plt.tight_layout()
plt.show()Menggabungkan Plot Strip dengan Kotak/Biola
Menambahkan sns.stripplot() di atas plot kotak atau plot biola akan menampilkan setiap titik data individual sebagai titik, sehingga pencilan dan ukuran sampel kecil tidak tersembunyi. Tetapkan jitter=True untuk menyebarkan titik secara horizontal agar tidak menumpuk pada posisi yang sama, dan tetapkan alpha agar titik menjadi semitransparan ketika jumlahnya banyak.
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset('tips')
ax = sns.boxplot(data=tips, x='day', y='tip',
order=['Thur', 'Fri', 'Sat', 'Sun'],
palette='Set3', width=0.5)
# Overlay individual points
sns.stripplot(data=tips, x='day', y='tip',
order=['Thur', 'Fri', 'Sat', 'Sun'],
color='black', alpha=0.3, jitter=True, size=3, ax=ax)
plt.title('Tip Distribution with Raw Points')
plt.show()Memilih antara boxplot, barplot, dan violinplot
Gunakan plot kotak ketika Anda perlu melihat median, IQR, dan pencilan, serta ukuran sampelnya sedang. Gunakan plot batang ketika audiens Anda memperhatikan mean dan interval kepercayaan (hal yang umum dalam laporan dan dasbor). Gunakan plot biola ketika Anda ingin menampilkan bentuk distribusi secara keseluruhan—terutama multimodalitas. Untuk himpunan data kecil (n < 30 per kelompok), pilih plot kotak yang dilengkapi plot strip daripada plot biola karena kurva KDE menjadi tidak andal jika titiknya sedikit.
catplot: Antarmuka Tingkat Figur
sns.catplot() adalah pembungkus tingkat figur untuk semua plot kategorikal. Berikan kind='box', 'bar', 'violin', 'strip', 'swarm', 'count', atau 'point' untuk mengganti jenis plot. Keunggulan utamanya adalah parameter col dan row yang secara otomatis membuat kisi subplot—misalnya, panel terpisah untuk setiap gender atau waktu dalam sehari tanpa perlu membuat plt.subplots secara manual.
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset('tips')
# Faceted box plots: separate panel per time of day
sns.catplot(
data=tips,
x='day',
y='total_bill',
col='time',
kind='box',
order=['Thur', 'Fri', 'Sat', 'Sun'],
height=5,
aspect=0.8
)
plt.suptitle('Bill by Day, Faceted by Time', y=1.02)
plt.show()Plot Count untuk Tabel Frekuensi
sns.countplot() menunjukkan jumlah pengamatan yang termasuk dalam setiap kategori—pada dasarnya diagram batang jumlah. Fungsinya setara dengan memanggil value_counts() lalu membuat plot. Gunakan ini untuk memvisualisasikan ketidakseimbangan kelas dalam himpunan data, frekuensi nilai kategorikal, atau ukuran sampel per kelompok sebelum membuat perbandingan distribusi apa pun. Urutkan batang berdasarkan frekuensi dengan order=df['col'].value_counts().index.
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset('tips')
# Count by day, sorted by frequency
day_order = tips['day'].value_counts().index
sns.countplot(data=tips, x='day', order=day_order, palette='viridis')
plt.title('Number of Observations per Day')
plt.ylabel('Count')
plt.show()Plot Titik untuk Perbandingan Efek
sns.pointplot() menggambar mean setiap kategori sebagai titik dan menghubungkannya dengan garis, sehingga tren di berbagai kategori berurutan mudah dilihat. Batang galat menunjukkan interval kepercayaan. Ini sangat berguna ketika sumbu x mewakili kelompok berurutan, seperti rentang usia atau tingkat pendidikan, dan Anda ingin menekankan arah serta besarnya perubahan antarkelompok, bukan hanya mean yang berdiri sendiri.
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset('tips')
sns.pointplot(
data=tips,
x='day',
y='tip',
hue='smoker',
order=['Thur', 'Fri', 'Sat', 'Sun'],
dodge=True,
capsize=0.1
)
plt.title('Mean Tip by Day and Smoker Status')
plt.show()Pemeriksaan Singkat
Uji pemahaman Anda tentang plot kategorikal Seaborn dari pelajaran ini.
Rangkuman Pelajaran
Dalam pelajaran ini, Anda telah mempelajari bahwa sns.boxplot merangkum distribusi dengan median, IQR, dan pencilan, sns.barplot menampilkan mean kelompok dengan batang galat interval kepercayaan, dan sns.violinplot menampilkan bentuk distribusi secara keseluruhan, termasuk multimodalitas. Selanjutnya, kita akan mempelajari plot sebar dan plot pasangan untuk memvisualisasikan hubungan antarvariabel numerik.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Plot Kategorikal: boxplot, barplot, violinplot” gratis?
Ya — teks lengkap “Plot Kategorikal: boxplot, barplot, violinplot” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Pandas & NumPy Academy, upgrade ke CoddyKit PRO. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Plot Kategorikal: boxplot, barplot, violinplot”?
Bandingkan distribusi antargrup dengan plot kotak dan plot biola, lalu plot rata-rata grup dengan batang galat menggunakan barplot. Kamu berlatih Pandas & NumPy Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Pandas & NumPy Academy?
Tidak diperlukan pengalaman sebelumnya. Pandas & NumPy Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Plot Kategorikal: boxplot, barplot, violinplot” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Pandas & NumPy Academy ini?
Ya. Setiap pelajaran Pandas & NumPy Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Plot Distribusi: histplot dan kdeplot
- Plot Kategorikal: boxplot, barplot, violinplot
- Plot Sebaran dan Plot Pasangan
- Peta Panas untuk Matriks Korelasi