pythonmatplotlibvisualisasiMahir4 mnt baca

Visualisasi Data dengan Matplotlib

Line, bar, histogram: ubah angka jadi grafik yang bercerita. Termasuk tugas mini dashboard.

Angka itu bahan mentah, grafik itu hidangannya

Analogi: dataset mentah seperti bahan makanan di pasar, bergizi tapi tidak ada yang mau mengunyahnya mentah-mentah. Visualisasi adalah proses memasaknya: memilih bahan (data), teknik masak (jenis grafik), dan plating (label, warna) sampai stakeholder mau "memakannya", alias paham insight-nya dalam 10 detik. Manusia memproses gambar jauh lebih cepat daripada tabel, jadi grafik yang baik menjawab pertanyaan sebelum sempat ditanyakan.

Kenapa penting buat data analyst? Karena analisis yang tidak divisualkan biasanya tidak dibaca. Laporan berisi tabel 10 ribu baris akan dilewati atasan, tapi satu grafik tren yang naik turun langsung memicu diskusi. Skill visualisasi adalah pembeda antara analyst yang datanya "nyangkut di notebook" dan yang insight-nya dipakai mengambil keputusan.

Contoh pertama, grafik garis untuk tren. Hukum wajibnya: tiap grafik punya title, xlabel, ylabel.

python
import matplotlib.pyplot as plt

bulan = ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun"]
omzet = [120, 150, 130, 180, 170, 210]

plt.plot(bulan, omzet, marker="o")
plt.title("Tren Omzet Semester 1 2026")
plt.xlabel("Bulan")
plt.ylabel("Omzet (juta rupiah)")
plt.grid(True, alpha=0.3)
plt.show()

Contoh kedua, lebih realistis: mini dashboard 3 panel dalam satu figure, lengkap dengan styling yang rapi.

python
import numpy as np

produk = ["Kopi", "Teh", "Susu", "Roti"]
terjual = [120, 85, 60, 95]
transaksi = np.random.normal(45000, 12000, 300)

fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(12, 4))

ax1.plot(bulan, omzet, marker="o", color="#8B5CF6")
ax1.set_title("Tren Omzet")
ax1.set_xlabel("Bulan"); ax1.set_ylabel("Juta rupiah")

ax2.bar(produk, terjual, color="#38bdf8")
ax2.set_title("Terjual per Produk")
ax2.set_xlabel("Produk"); ax2.set_ylabel("Unit")

ax3.hist(transaksi, bins=20, color="#22c55e", edgecolor="white")
ax3.set_title("Distribusi Nilai Transaksi")
ax3.set_xlabel("Rupiah"); ax3.set_ylabel("Frekuensi")

plt.tight_layout()
plt.savefig("dashboard.png", dpi=150)
plt.show()

Perhatikan polanya: plt.subplots() membuat figure berisi beberapa axes, tiap axes digambar terpisah, tight_layout() mencegah label saling tumpuk. Memakai objek ax (bukan plt. global) adalah gaya yang disarankan begitu grafikmu lebih dari satu, karena tiap panel bisa diatur sendiri-sendiri.

Aturan memilih jenis grafik: tren sepanjang waktu pakai line, perbandingan antar kategori pakai bar, sebaran nilai pakai histogram. Salah pilih grafik bisa menyesatkan pembaca meski datanya 100% benar, misalnya pie chart dengan 20 potong yang tidak bisa dibedakan matanya.

Jebakan umum

SALAH: memanggil plt.show() dulu baru plt.savefig().

python
plt.plot(bulan, omzet)
plt.show()
plt.savefig("grafik.png")   # file kosong!

BENAR: simpan dulu, tampilkan belakangan.

python
plt.plot(bulan, omzet)
plt.savefig("grafik.png")   # canvas masih utuh
plt.show()

Penjelasannya: show() "menghabiskan" figure yang sedang aktif di beberapa backend, sehingga save setelahnya menghasilkan kanvas kosong. Urutan yang aman selalu save-then-show.

SALAH: grafik tanpa label sumbu dan judul, mengandalkan pembaca menebak-nebak.

python
plt.bar(produk, terjual)
plt.show()   # angka 120 itu apa? unit? juta? tidak ada yang tahu

BENAR: selalu lengkapi tiga label, tambahkan grid kalau membantu dibaca.

python
plt.bar(produk, terjual, color="#8B5CF6")
plt.title("Unit Terjual per Produk, Juni 2026")
plt.xlabel("Produk"); plt.ylabel("Unit terjual")
plt.show()

Catatan teknis: Untuk laporan yang diekspor ke PNG/PDF, atur figsize dan dpi sejak awal (plt.savefig("x.png", dpi=150)). Grafik default 6.4x4.8 inci terlihat kecil dan pecah saat ditempel di slide presentasi, masalah klasik dashboard yang dibuat terburu-buru.

Tantangan

Grafik penjualan mingguan

Buat bar chart penjualan 7 hari (Senin-Minggu) dengan data bebas. Tambahkan title, label sumbu, dan warna berbeda untuk hari dengan penjualan tertinggi.

Tugas

Tugas: Mini Dashboard Penjualan

Buat script Python yang menghasilkan satu figure berisi 3 subplot: (1) line chart tren omzet 6 bulan, (2) bar chart penjualan per produk (minimal 4 produk), (3) histogram distribusi nilai transaksi (minimal 100 data acak). Setiap subplot wajib punya title dan label sumbu. Simpan figure sebagai file dashboard.png dengan plt.savefig().

Kriteria penilaian:

  • Ada tepat 3 subplot dalam satu figure
  • Setiap subplot punya title, xlabel, dan ylabel
  • Jenis grafik sesuai datanya (line/bar/hist)
  • File dashboard.png berhasil tersimpan
  • Kode rapi dan bisa dijalankan ulang

AI tutor akan memeriksa bug, kesalahan syntax, dan memberi saran perbaikan.