Seaborn untuk Visualisasi Data Python: 10 Plot Analitik Penting
TL;DR
Seaborn adalah library visualisasi Python yang dibangun di atas Matplotlib, khusus buat grafik statistik kayak distribusi, korelasi, dan perbandingan antar kelompok. Kelebihannya, satu baris kode bisa langsung baca kolom DataFrame lewat parameter data, x, y, dan hue tanpa perlu ngolah agregasi manual. Sepuluh plot inti Seaborn (histplot, kdeplot, boxplot, violinplot, barplot, countplot, scatterplot, lineplot, heatmap, dan pairplot) sudah nutup mayoritas kebutuhan analisis data eksploratif.
Seaborn adalah library Python buat bikin grafik statistik dari DataFrame pandas cuma dengan satu baris kode.
Library ini jalan di atas Matplotlib. Yang dia tambahin: kemampuan baca kolom langsung dari DataFrame, agregasi otomatis, dan tema visual yang udah rapi tanpa disetel.
Buat kerjaan analisis eksploratif, ini ngehemat banyak waktu. Grafik boxplot per kategori yang di Matplotlib butuh 8 baris, di Seaborn cukup satu.
Sepuluh plot di bawah ini yang paling sering aku pakai, plus catatan kapan tiap plot itu jujur dan kapan malah nyesatin.
Apa itu Seaborn dan bedanya sama Matplotlib?
Seaborn adalah library visualisasi data Python yang fokus ke grafik statistik: distribusi, korelasi, dan perbandingan antar kelompok. Bedanya dengan Matplotlib, Seaborn ngerti struktur DataFrame. Kamu cukup sebut nama kolom lewat parameter x, y, dan hue, lalu Seaborn yang ngurus pengelompokan dan perhitungannya.
Matplotlib nggak tau apa itu kolom. Kamu harus siapin array angka sendiri.
# Matplotlib: agregasi manual dulu
rata = df.groupby("cabang")["omzet"].mean()
plt.bar(rata.index, rata.values)
# Seaborn: satu baris
sns.barplot(data=df, x="cabang", y="omzet")
Kalau kamu belum kenal dasar Matplotlib, mulai dari tutorial Matplotlib bahasa Indonesia dulu. Semua pengaturan judul dan ukuran gambar di Seaborn tetap pakai perintah Matplotlib.
Gimana cara install dan setup Seaborn?
Install lewat pip. Matplotlib dan pandas ikut terpasang otomatis sebagai dependensi.
pip install seaborn
Lalu impor dengan alias standar dan set tema di awal notebook:
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
sns.set_theme(style="whitegrid")
sns.set_palette(["#0891b2", "#f97316", "#fbbf24"])
print(sns.__version__)
Cek versinya, soalnya beberapa parameter berubah nama di versi 0.12. Yang paling sering bikin error: ci diganti jadi errorbar.
Sebaiknya install di dalam virtual environment terpisah biar versi Seaborn proyekmu nggak ketimpa update dari proyek lain.
Data contoh: penjualan toko_berkah
Semua contoh di bawah pakai dataset latihan ngulikdata berisi transaksi ritel dari empat cabang di Jabodetabek.
df = pd.read_csv("toko_berkah.csv")
print(df.head())
# tanggal cabang kategori nilai jumlah_item
# 0 2025-01-02 Depok Sembako 142500 7
# 1 2025-01-02 Bekasi Snack 38000 3
Apa saja 10 plot Seaborn yang paling penting?
Sepuluh plot ini kepilih berdasarkan pertanyaan analisis yang paling sering muncul: gimana bentuk sebaran datanya, kelompok mana yang beda, dan variabel mana yang berhubungan.
1. histplot: bentuk sebaran satu variabel
sns.histplot(data=df, x="nilai", bins=40)
Plot pertama yang aku jalankan buat kolom numerik apa pun. Sebaran nilai transaksi ritel hampir selalu miring ke kanan, dan histogram langsung nunjukin itu.
2. kdeplot: sebaran yang halus buat banding kelompok
sns.kdeplot(data=df, x="nilai", hue="cabang", fill=True, alpha=0.3)
Bagus buat numpuk beberapa kelompok dalam satu gambar. Hati-hati kalau datanya sedikit, kurva halus bisa bikin pola palsu kelihatan nyata.
3. boxplot: median dan outlier per kategori
sns.boxplot(data=df, x="cabang", y="nilai")
Titik di luar kumis itu kandidat outlier. Di data ritel, itu sering transaksi grosir yang beneran terjadi, jadi jangan buru-buru dibuang.
4. violinplot: bentuk sebaran penuh
sns.violinplot(data=df, x="cabang", y="nilai", inner="quartile")
Pakai kalau kamu curiga ada dua puncak. Boxplot nggak bisa nunjukin itu, dua sebaran yang beda bentuk bisa punya boxplot identik.
5. barplot: rata-rata per kategori
sns.barplot(data=df, x="kategori", y="nilai", errorbar=None)
Default-nya barplot ngitung rata-rata, bukan total. Kalau kamu mau total omzet, agregasi dulu di pandas.
6. countplot: jumlah baris per kategori
sns.countplot(data=df, x="kategori", hue="cabang")
Ini barplot yang isinya cacah, bukan nilai. Cepat buat cek apakah datamu seimbang antar kelompok.
7. scatterplot: hubungan dua variabel numerik
sns.scatterplot(data=df, x="jumlah_item", y="nilai",
hue="kategori", alpha=0.6)
Parameter hue bikin kategori jadi warna tanpa perlu loop manual.
8. lineplot: tren waktu dengan interval kepercayaan
sns.lineplot(data=df, x="tanggal", y="nilai", hue="cabang")
Kalau satu tanggal punya banyak baris, Seaborn otomatis ngitung rata-rata dan gambar pita ketidakpastian di sekitar garisnya.
9. heatmap: matriks korelasi
korelasi = df[["nilai", "jumlah_item", "diskon"]].corr()
sns.heatmap(korelasi, annot=True, fmt=".2f", cmap="Blues")
Aktifkan annot=True biar angkanya kelihatan. Heatmap tanpa angka itu cuma dekorasi.
10. pairplot: semua kombinasi sekaligus
sns.pairplot(df[["nilai", "jumlah_item", "diskon", "kategori"]],
hue="kategori", corner=True)
Paling berat komputasinya. Pakai di awal eksplorasi buat cari pasangan variabel yang menarik, lalu gambar ulang yang menarik itu pakai scatterplot biasa.
Contoh kasus: heatmap yang ngubah rencana diskon
Dari dataset toko_berkah, aku hitung korelasi antara besaran diskon dan nilai transaksi. Hasilnya 0,08. Praktis nol.
Tapi begitu dipecah per kategori pakai parameter hue, ceritanya beda. Di kategori Sembako korelasinya 0,31, sementara di kategori Snack justru negatif tipis di angka minus 0,06.
Artinya diskon di produk sembako ngedorong orang belanja lebih banyak per struk, sedangkan diskon snack nggak ngefek ke nilai belanja. Rata-rata nilai transaksi sembako berdiskon Rp 118.400, dibanding Rp 91.200 tanpa diskon.
Kalau berhenti di angka korelasi gabungan, kesimpulannya bakal "diskon nggak ngaruh" dan program promo sembako kena potong. Satu langkah pecah kelompok nyelametin itu.
Kesalahan umum waktu pakai Seaborn
- Ngira barplot nampilin total. Default-nya rata-rata. Ini kesalahan paling sering yang bikin angka laporan meleset jauh.
- Biarin error bar muncul di data agregat. Kalau datamu sudah hasil groupby, error bar itu nggak punya arti. Matikan pakai errorbar=None.
- Pakai figsize di dalam fungsi Seaborn. Fungsi axes-level kayak boxplot nggak nerima figsize. Bikin figure dulu pakai plt.subplots, lalu kasih ax ke Seaborn.
- Numpuk 8 kategori di satu hue. Lebih dari 6 warna bikin legenda nggak kebaca. Kelompokkan yang kecil jadi Lainnya.
- Pakai palet warna acak buat data berurutan. Rating 1 sampai 5 butuh gradasi, bukan warna kategorikal.
- Nggak cek versi library. Parameter ci diganti errorbar di versi 0.12. Dokumentasi resminya ada di halaman pengantar Seaborn.
Kapan pakai Seaborn, kapan balik ke Matplotlib?
| Kebutuhan | Pakai | Alasan |
|---|---|---|
| Eksplorasi cepat sebaran data | Seaborn | Satu baris, agregasi otomatis |
| Banding kelompok pakai warna | Seaborn | Parameter hue nutup semuanya |
| Grafik final buat slide direksi | Matplotlib | Kontrol posisi label dan anotasi |
| Dua sumbu Y | Matplotlib | Seaborn nggak punya twinx sendiri |
| Panel grid per kategori | Seaborn | FacetGrid dan relplot lebih ringkas |
FAQ
Seaborn bisa dipakai tanpa Matplotlib?
Nggak bisa. Seaborn dibangun di atas Matplotlib dan otomatis menginstalnya. Tiap kali kamu ganti judul, ukuran gambar, atau simpan file, kamu manggil perintah Matplotlib.
Apa bedanya barplot dan countplot?
countplot ngitung jumlah baris per kategori. barplot ngitung rata-rata kolom numerik per kategori dan nambahin error bar. Kalau kamu mau total, agregasi dulu di pandas.
Kenapa error bar muncul padahal aku nggak minta?
Karena barplot default-nya nampilin interval kepercayaan 95 persen dari rata-rata. Matikan pakai errorbar=None di versi 0.12 ke atas, atau ci=None di versi lama.
Kapan pakai violinplot dibanding boxplot?
Pakai violinplot kalau kamu curiga sebarannya punya dua puncak atau nggak simetris. Boxplot cuma nunjukin median dan kuartil, jadi dua sebaran yang bentuknya beda bisa kelihatan identik.
Gimana cara ganti palet warna sesuai brand?
Pakai parameter palette dengan daftar hex sendiri, misalnya palette=["#0891b2", "#f97316"]. Buat data berurutan, pilih gradasi kayak Blues. Set sekali di awal notebook lewat sns.set_palette.
Langkah berikutnya
Tiga hal yang paling berguna dari daftar ini: histplot buat kenalan sama data baru, boxplot buat cari kelompok yang beda, dan heatmap korelasi buat nentuin variabel mana yang layak diselidiki lebih jauh.
Kalau datamu masih di file spreadsheet, mulai dari cara baca file Excel di Python.
Buat yang masih lebih cepat ngolah data di spreadsheet, fungsi kayak AVERAGE dan MEDIAN bisa kamu latih dulu di NgulikSheet sebelum pindah ke Python.
Ambil satu dataset yang kamu punya, jalankan histplot, boxplot, dan heatmap korelasinya sore ini. Tiga plot itu biasanya cukup buat nemu satu pertanyaan yang layak digali.
Mau praktek langsung? Mulai latihan SQL gratis
Latihan interaktif, langsung di browser.
Artikel terkait
Pandas groupby: Agregasi Data ala Pivot di Python (2026)
groupby ngelompokin baris berdasarkan kolom, lalu ngitung ringkasan per grup kayak total atau rata-rata. Ini pivot-nya pandas.
Pandas to_excel: Ekspor DataFrame ke Excel (2026)
to_excel nyimpen DataFrame pandas jadi file Excel .xlsx. Ini cara pakainya, dari satu sheet sampai banyak sheet, plus setelan yang bikin hasilnya rapi.
Pandas read_excel: Baca File Excel di Python
pandas read_excel baca file Excel jadi DataFrame, bisa pilih sheet tertentu dan lompatin baris judul yang berantakan. Ini cara pakai plus parameter penting dengan contoh data toko.