visualisasimatplotlibMahir5 mnt baca

Bar Chart dan Line Chart dengan Matplotlib

Kapan memakai bar chart dan kapan memakai line chart, lengkap dengan contoh data penjualan dan jebakan visualisasi yang menyesatkan.

Kenapa dua chart ini wajib dikuasai

Sebagian besar pekerjaan data analyst adalah menerjemahkan angka menjadi cerita yang dipahami orang non-teknis dalam 10 detik. Bar chart dan line chart adalah dua senjata utama untuk itu. Salah pilih chart, insight yang sebenarnya bagus bisa gagal tersampaikan. Lebih parah lagi, audiens bisa menarik kesimpulan yang salah dari chart yang benar datanya.

Analogi: bar chart itu foto, line chart itu video

Bayangkan kamu membandingkan penjualan antar cabang pada bulan yang sama. Itu seperti foto: satu momen waktu, banyak kategori. Bar chart adalah jawabannya. Sekarang bayangkan kamu ingin tahu apakah omzet naik atau turun dari Januari sampai Desember. Itu seperti video: satu subjek yang direkam dari waktu ke waktu. Line chart adalah jawabannya.

Aturan praktisnya sederhana. Sumbu-x berisi kategori diskret (nama cabang, jenis produk, segmen pelanggan), pakai bar chart. Sumbu-x berisi urutan waktu yang kontinu (hari, minggu, bulan), pakai line chart. Kalau kamu ragu, tanyakan: apakah ada makna di "antara" dua titik di sumbu-x? Kalau tidak ada, jangan pakai garis.

Contoh 1: bar chart penjualan per kategori

python
import matplotlib.pyplot as plt

kategori = ["Kopi", "Teh", "Roti", "Snack"]
penjualan = [120, 85, 150, 60]

plt.bar(kategori, penjualan)
plt.title("Penjualan per Kategori (unit)")
plt.ylabel("Unit terjual")
plt.show()

Hanya empat baris inti: data x, data y, plt.bar, tampilkan. Untuk eksplorasi cepat, gaya plt. (state-based) seperti ini sudah cukup dan paling sering dipakai saat prototyping.

Contoh 2: line chart tren omzet plus anotasi

python
import matplotlib.pyplot as plt

bulan = ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun"]
omzet = [12.5, 14.2, 13.1, 16.8, 18.4, 21.0]  # juta rupiah

fig, ax = plt.subplots(figsize=(8, 4))
ax.plot(bulan, omzet, marker="o", linewidth=2)
ax.set_title("Tren Omzet 6 Bulan Terakhir")
ax.set_ylabel("Omzet (juta Rp)")
ax.grid(alpha=0.3)
ax.annotate("Promo Lebaran", xy=("Apr", 16.8),
            xytext=("Mar", 19.5),
            arrowprops=dict(arrowstyle="->"))
plt.tight_layout()
plt.show()

Perhatikan tiga upgrade dibanding chart mentah. Pertama, marker="o" supaya tiap titik data terlihat jelas, bukan cuma garisnya. Kedua, grid(alpha=0.3) tipis sebagai pemandu mata membaca nilai. Ketiga, annotate untuk menandai momen penting. Chart yang bagus selalu membantu menjawab "kenapa naik atau turun", bukan cuma "berapa angkanya".

Contoh 3: bar horizontal untuk label yang panjang

python
cabang = ["Jakarta Selatan", "Bandung Kota", "Surabaya Timur"]
nilai = [45.2, 38.7, 41.9]

fig, ax = plt.subplots(figsize=(7, 3))
ax.barh(cabang, nilai, color="#8B5CF6")
ax.set_xlabel("Omzet (juta Rp)")
ax.set_title("Omzet per Cabang")
plt.tight_layout()
plt.show()

Kalau label kategorinya panjang, bar vertikal membuat label bertumpuk dan harus dimiringkan sampai susah dibaca. Putar menjadi horizontal dengan barh, dan setiap label langsung terbaca rapi. Ini trik kecil yang membuat chart laporanmu terlihat jauh lebih profesional.

Jebakan umum 1: line chart untuk kategori

SALAH: memakai line chart untuk "penjualan per kategori produk". Garis yang menghubungkan "Kopi" ke "Teh" tidak punya makna, karena tidak ada "sesuatu" di antara dua kategori itu. Mata pembaca otomatis membaca tren naik turun yang sebenarnya tidak ada.

BENAR: bar chart untuk kategori yang tidak berurutan. Line chart hanya untuk sumbu-x yang berurutan dan kontinu, seperti waktu. Ini kesalahan paling sering yang Kana lihat di laporan magang.

Jebakan umum 2: sumbu-y bar chart tidak mulai dari nol

Tinggi bar dibaca mata sebagai nilai absolut. Kalau sumbu-y dipotong dan mulai dari 100, perbedaan kecil antar bar terlihat raksasa. Ini teknik klasik chart yang menyesatkan, disengaja atau tidak. Pada line chart, memotong sumbu-y kadang bisa diterima untuk memperjelas tren, tapi pada bar chart jangan pernah dilakukan.

Catatan teknis: Matplotlib punya dua gaya API. plt.plot() itu state-based dan cepat untuk eksplorasi. fig, ax = plt.subplots() itu object-oriented dan wajib dipakai saat kamu membuat dashboard multi-chart atau butuh kontrol detail tiap sumbu. Di level mahir, biasakan gaya kedua karena semua library visualisasi modern (termasuk Seaborn) dibangun di atasnya.

Ringkasan cepat

  • Kategori diskret pakai bar chart, tren waktu pakai line chart.
  • Tambahkan marker, grid tipis, dan anotasi momen penting.
  • Label kategori panjang pakai bar horizontal (barh).
  • Sumbu-y bar chart selalu mulai dari nol.

Tantangan

Pilih chart yang tepat

Kamu diberi data penjualan 12 bulan untuk 5 kategori produk. Buat satu line chart tren total penjualan per bulan dan satu bar chart total penjualan per kategori. Tulis satu kalimat insight dari tiap chart, dan jelaskan kenapa chart itu yang kamu pilih.