Belajar Data Analyst - Visualisasi Data (matplotlib/seaborn)
Episode 9 of 28

Belajar Data Analyst - Visualisasi Data (matplotlib/seaborn)

Episode ini mengajarkan visualisasi data yang jujur dan informatif dengan matplotlib & seaborn: line, bar, scatter, histogram, dan heatmap, plus prinsip pemilihan chart dan cara mengenali visualisasi yang menyesatkan (misleading visualization)

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

Setelah EDA di episode 8 menemukan pola, sekarang saatnya menunjukkan pola itu. Sebuah grafik yang baik menyampaikan insight dalam satu detik — jauh lebih cepat daripada seribu kata. Tapi visualisasi adalah pedang bermata dua: grafik yang buruk atau menyesatkan bisa membuat orang mengambil keputusan yang salah berdasarkan data yang sama.

Episode ini membangun dua hal: tooling (matplotlib & seaborn) dan judgment (kapan memakai chart apa, dan bagaimana menjaga grafik tetap jujur). Kita tutup dengan latihan membuat grafik yang menjawab pertanyaan bisnis nyata — bukan sekadar hiasan.

memilih Chart yang Tepat

Aturan pertama visualisasi: chart mengikuti pertanyaan, bukan sebaliknya. Panduan praktisnya:

PertanyaanChart yang tepat
Bagaimana tren sepanjang waktu?Line chart
Membandingkan nilai antar kategori?Bar chart
Hubungan dua variabel numerik?Scatter plot
Seperti apa distribusi satu variabel?Histogram
Hubungan antar banyak variabel numerik?Heatmap korelasi
Proporsi bagian dari keseluruhan?Bar (bukan pie bila banyak kategori)

Gunakan tabel ini sebagai checklist: jika pertanyaan bisnisnya "trend atau comparison?" maka line atau bar sudah menjawab 90% kasus.

Line dan Bar dengan matplotlib

matplotlib adalah fondasi semua plotting Python. Contoh line chart untuk tren penjualan bulanan:

PythonLine chart tren bulanan
import pandas as pd
import matplotlib.pyplot as plt
 
df = pd.read_csv("orders.csv")
bulanan = df.groupby(df["tanggal"].dt.to_period("M"))["harga"].sum()
 
plt.figure(figsize=(10, 4))
bulanan.plot(marker="o")
plt.title("Total Penjualan per Bulan")
plt.ylabel("Revenue")
plt.grid(alpha=0.3)
plt.tight_layout()
plt.show()

Bar chart untuk perbandingan antar kategori:

PythonBar chart per produk
revenue_per_produk = df.groupby("product")["harga"].sum().sort_values()
 
revenue_per_produk.plot(kind="barh", figsize=(8, 4))
plt.xlabel("Revenue")
plt.title("Revenue per Produk")
plt.tight_layout()
plt.show()

Catatan kecil: bar horizontal (barh) lebih nyaman dibaca untuk banyak kategori — nama kategori tidak perlu diputar 90 derajat.

Scatter dan Histogram

Scatter untuk melihat hubungan dua variabel numerik:

PythonScatter harga vs quantity
df.plot.scatter(x="harga", y="quantity", alpha=0.5, figsize=(8, 5))
plt.title("Hubungan Harga dan Quantity")
plt.show()

Histogram untuk distribusi:

PythonHistogram distribusi harga
df["harga"].hist(bins=30, figsize=(8, 4))
plt.xlabel("Harga")
plt.ylabel("Frekuensi")
plt.title("Distribusi Harga Order")
plt.show()

Histogram adalah alat pemburu insight yang paling jujur: ia langsung menunjukkan skewed, bimodal, atau outlier — jauh lebih jelas daripada angka skew().

Seaborn: Visualisasi Statistik yang Cepat

Seaborn dibangun di atas matplotlib dengan fokus visualisasi statistik. Tiga fungsi yang paling sering dipakai analis:

PythonHeatmap korelasi
import seaborn as sns
 
sns.heatmap(df[["harga", "quantity", "total"]].corr(), annot=True, cmap="coolwarm")
plt.title("Matriks Korelasi")
plt.show()
PythonDistribusi per kategori (boxplot)
sns.boxplot(data=df, x="product", y="harga")
plt.xticks(rotation=45)
plt.title("Sebaran Harga per Produk")
plt.show()
PythonDistribusi numerik per kategori
sns.histplot(data=df, x="harga", hue="product", multiple="stack")
plt.show()

Boxplot menampilkan median, kuartil, dan outlier dalam satu gambar — cara tercepat membandingkan distribusi antar kategori.

Tip

Aturan praktis untuk dashboard dan laporan: bar/line untuk komunikasi eksekutif, scatter/histogram/boxplot untuk eksplorasi internal, heatmap untuk diagnostik. Menyimpan grafik eksplorasi di presentasi eksekutif adalah salah satu kesalahan komunikasi data paling umum.

Misleading Visualization: Musuh Ketenangan

Visualisasi yang menyesatkan bukan hanya soal niat jahat — banyak yang lahir dari kecerobohan. Tiga pola paling umum:

Trik menyesatkanCara menangkal
Memotong sumbu Y tidak dari nolMulai sumbu dari 0 untuk bar chart; beri label jelas
Skala sumbu berbeda antar panelGunakan skala yang sama untuk perbandingan
Chart yang salah jenis (pie dengan 15 slice)Gunakan bar; batasi pie maksimal 4-5 kategori
Menggabungkan data yang tidak sebandingPisahkan, jangan rata-rata "apel + jeruk"

Uji kejujuran grafik kalian: apakah pembaca bisa menarik kesimpulan yang sama dari tabel aslinya? Jika tidak, grafiknya menipu — sadar atau tidak.

PythonBar chart yang jujur: mulai dari nol
sns.barplot(data=df, x="product", y="harga", errorbar=None)
plt.ylim(0, df["harga"].max() * 1.1)
plt.title("Rata-rata Harga per Produk")
plt.show()

Praktik: Grafik yang Menjawab Pertanyaan Bisnis

Pertanyaan: "Apakah ada musiman dalam penjualan, dan produk mana yang sedang naik?"

PythonTren per produk per bulan
df["bulan"] = df["tanggal"].dt.to_period("M")
pivot = df.pivot_table(index="bulan", columns="product", values="harga", aggfunc="sum")
pivot.plot(figsize=(10, 5), marker="o")
plt.title("Tren Revenue per Produk per Bulan")
plt.grid(alpha=0.3)
plt.tight_layout()
plt.show()

Satu gambar menjawab dua pertanyaan sekaligus: tren keseluruhan dan perbandingan antar produk. Ini template yang akan kalian pakai berulang untuk reporting bulanan.

Kesalahan Umum

  • Chart untuk hiasan, bukan menjawab pertanyaan. Setiap grafik harus punya "so what".
  • Memotong sumbu Y tanpa label. Sumber ketidakjujuran nomor satu.
  • Pie chart dengan banyak kategori. Mata manusia buruk membandingkan sudut.
  • Menumpuk terlalu banyak dimensi. Mulai sederhana; tambah kompleksitas hanya jika menambah makna.

Penutup

Inti yang harus dibawa pulang:

  • Chart mengikuti pertanyaan: line untuk tren, bar untuk perbandingan, scatter/histogram/heatmap untuk eksplorasi.
  • Seaborn mempercepat visualisasi statistik (heatmap, boxplot, histplot).
  • Jaga kejujuran: sumbu mulai dari nol, skala konsisten, jenis chart tepat.
  • Uji "apel dan jeruk": jangan gabungkan data yang tidak sebanding.

Di episode 10 selanjutnya kita kembali ke senjata yang sering diremehkan: Excel & Google Sheets lanjutan — pivot table, VLOOKUP/XLOOKUP, formula, dan QUERY di Google Sheets untuk analisis cepat yang tidak perlu menunggu stack Python. Visualisasi sudah kalian kuasai; sekarang kita membuatnya cepat di spreadsheet!

Belajar Data Analyst - Visualisasi Data (matplotlib/seaborn) | Belajar Data Analyst