Menyediakan data di tangan lalu bertanya “grafik apa yang kubuat?” adalah urutan kerja yang terbalik. Grafik bukan hiasan laporan; grafik adalah jawaban — jadi jenisnya ditentukan oleh pertanyaan yang ingin kita jawab, bukan oleh selera atau oleh menu yang tersedia di library. Pada chapter ini kita susun peta dari pertanyaan analisis ke jenis grafik, perhatikan peran tipe data dalam keputusan itu, lalu bedah kesalahan pemilihan yang paling sering terjadi. Hasilnya berupa kebiasaan berpikir yang kita pakai pada seluruh chapter praktik setelah ini.

Mulai dari Pertanyaan, Bukan dari Data #

Setiap grafik yang berguna dapat dilacak balik ke satu pertanyaan. “Menu mana yang paling laku?” menuntut perbandingan antar kategori. “Apakah pelanggan besar datang di jam tertentu?” menuntut pandangan terhadap hubungan dua variabel. “Naik atau turun penjualan kita sebulan terakhir?” menuntut pembacaan tren sepanjang waktu. Pertanyaan yang jelas otomatis menyempitkan pilihan grafik menjadi satu-dua kandidat; pertanyaan yang kabur membuat kita berkeliling mencoba satu jenis grafik demi jenis grafik lain tanpa pernah tahu kapan berhenti.

Kebiasaan praktisnya tiga langkah. Pertama, tuliskan pertanyaannya dalam satu kalimat. Kedua, identifikasi variabel yang terlibat beserta tipe datanya — numerik, kategorikal, atau waktu. Ketiga, barulah cari jenis grafik yang paling cepat menjawab pertanyaan itu dengan variabel tersebut. Urutan ini terasa lambat di awal, tetapi menghemat puluhan menit mencoba-coba nanti.

Peta Pertanyaan ke Jenis Grafik #

Lima keluarga pertanyaan menutup hampir semua kebutuhan analisis harian. Tabel berikut memetakannya ke jenis grafik andalan beserta contohnya di Toko Kopi Kita:

Keluarga pertanyaanContoh pertanyaanVariabel yang terlibatJenis grafik andalan
Perbandinganmenu mana yang paling laku?satu kategorikal + satu angka per kategoribar chart
Distribusibagaimana sebaran nilai transaksi?satu numerikhistogram, boxplot
Hubunganapakah cuaca panas menaikkan penjualan es kopi?dua numerikscatter plot
Tren / deret waktubagaimana penjualan pekan ke pekan?waktu + satu numerikline chart
Susunan / komposisidari mana pendapatan kita berasal?kategori sebagai bagian dari totalstacked bar, pie chart (terbatas)

Baris-baris tersebut juga menjadi peta jalan Section ini: masing-masing keluarga dibahas tuntas pada chapternya sendiri, dari Grafik Perbandingan sampai Visualisasi Data Kategorikal, sebelum kita masuk ke library matplotlib dan seaborn secara mendalam.

Tipe data mempersempit pilihan lebih jauh. Dua variabel numerik mengarah ke scatter plot; satu variabel numerik mengarah ke histogram atau boxplot; satu variabel kategorikal dengan angka per kategori (hasil groupby) mengarah ke bar chart; sumbu horizontal berupa tanggal mengarah ke line chart. Aturan turunannya: jenis variabel pada sumbu menentukan keluarga grafik, sedangkan pertanyaan menentukan kategori mana dan agregasi apa yang ditampilkan.

Kesalahan Umum Saat Memilih #

Beberapa kekeliruan muncul berulang kali di laporan dan presentasi. Yang pertama: memakai pie chart untuk banyak kategori. Persepsi manusia terhadap sudut dan area tergolong lemah — membandingkan dua juring yang ukurannya berdekatan memaksa pembaca menebak, padahal dua batang bar chart dibedakan dalam sekejap. Pie chart hanya masih masuk akal untuk dua-tiga bagian yang besar porsinya.

Yang kedua: line chart untuk kategori tanpa urutan. Garis menyiratkan kesinambungan — mata pembaca mengikuti naik turunnya dan mencari makna pada urutan tersebut. Bila sumbu horizontalnya justru menu yang urutannya bebas (kopi susu, matcha, teh tawar), garis itu menuntun pembaca ke arah yang salah; bar chart lebih jujur untuk kasus ini.

Yang ketiga: grafik tiga dimensi untuk data dua dimensi. Efek 3D pada bar atau pie membuat tinggi elemen di depan tampak berbeda dari yang di belakang, padahal nilainya sama. Yang keempat: sumbu ganda (dual axis) untuk memaksa dua hal tampak berkorelasi — dua deret dengan skala berbeda dipaksakan satu bidang sehingga persilangannya bisa diatur hampir sesuka pembuatnya. Kedua praktik terakhir ini kita bedah lagi berikut konstruksi perbaikannya pada chapter Menghindari Visualisasi Menyesatkan di akhir Section.

Praktik: Dua Pertanyaan, Dua Grafik Berbeda #

Kita uji peta di atas dengan satu set data Toko Kopi Kita. Pertanyaan pertama: bagaimana tren penjualan kopi susu delapan pekan terakhir? Pertanyaan kedua: bagaimana sebaran nilai transaksi pelanggan? Perhatikan bahwa kedua pertanyaan menuntut grafik yang berbeda sekalipun datanya berasal dari kasir yang sama.

python
import numpy as np

rng = np.random.default_rng(42)
nilai_transaksi = rng.normal(36, 9, 30).round().astype(int)   # ribu rupiah

print("Jumlah transaksi :", len(nilai_transaksi))
print("Rata-rata        :", round(nilai_transaksi.mean(), 1))
print("Terkecil         :", nilai_transaksi.min())
print("Terbesar         :", nilai_transaksi.max())
print("Di bawah 25 ribu :", (nilai_transaksi < 25).sum(), "transaksi")

Output yang Dihasilkan:

text
Jumlah transaksi : 30
Rata-rata        : 36.1
Terkecil         : 18
Terbesar         : 47
Di bawah 25 ribu : 2 transaksi

Mari kita telaah baris-barisnya:

  1. Baris 3-4 (rng.normal(...)): 30 nilai transaksi dibangkitkan dengan generator angka acak berseed 42 agar contoh ini dapat direproduksi persis; nilai rata-ratanya 36 ribu rupiah dengan sebaran 9 ribu.
  2. Baris 6-10: ringkasan lima angka ini menjawab pertanyaan “berapa rata-ratanya?”, tetapi tidak menjawab “bagaimana sebarannya?” — dua transaksi di bawah 25 ribu itu terpisah seberapa jauh dari kelompoknya, misalnya, tidak terbaca dari angka rangkuman.

Untuk pertanyaan tren, sumbu horizontalnya adalah waktu sehingga line chart menjadi pilihan:

python
import matplotlib.pyplot as plt

pekan = [f"Pekan {i}" for i in range(1, 9)]
gelas = [182, 176, 190, 205, 198, 214, 226, 231]

fig, ax = plt.subplots(figsize=(6, 3.5))
ax.plot(pekan, gelas, marker="o", color="tab:blue")
ax.set_title("Penjualan Kopi Susu Delapan Pekan")
ax.set_xlabel("Pekan")
ax.set_ylabel("Gelas terjual")
ax.grid(True)
plt.show()

Grafiknya menampilkan satu garis biru dengan delapan penanda lingkaran yang bergerak naik secara umum: dari 182 gelas di Pekan 1 menuju 231 gelas di Pekan 8, dengan dua jeda turun kecil di Pekan 2 (176) dan Pekan 5 (198). Penanda lingkaran membuat nilai tiap pekan bisa dibaca persis, sementara garis menghubungkannya menjadi cerita tren yang jelas — persis kekuatan line chart untuk sumbu waktu.

Untuk pertanyaan sebaran, variabelnya tunggal dan numerik, sehingga jawabannya histogram:

python
import matplotlib.pyplot as plt
import numpy as np

rng = np.random.default_rng(42)
nilai_transaksi = rng.normal(36, 9, 30).round().astype(int)

fig, ax = plt.subplots(figsize=(6, 3.5))
ax.hist(nilai_transaksi, bins=6, color="tab:blue", edgecolor="white")
ax.set_title("Sebaran Nilai Transaksi")
ax.set_xlabel("Nilai transaksi (ribu rupiah)")
ax.set_ylabel("Jumlah transaksi")
plt.show()

Gambar yang muncul memuat enam batang: satu transaksi terkecil berada di kisaran 18-23 ribu, lalu batang bertambah tinggi menuju puncak di kisaran 33-37 ribu dengan 8 transaksi, dan turun landai kembali hingga 7 transaksi di kisaran 42-47 ribu. Bentuk gundukan yang condong ke kanan ini menjawab apa yang tidak dijawab ringkasan angka: sebagian besar transaksi berkumpul di 28-42 ribu, dan nilai kecil di bawah 25 ribu memang hanya segelintir. Sebaran seperti inilah yang dibedah lebih dalam pada chapter Grafik Distribusi.

Rangkuman #

  • Jenis grafik ditentukan oleh pertanyaan analisis, bukan oleh data yang kebetulan ada atau menu yang tersedia di library.
  • Lima keluarga pertanyaan — perbandingan, distribusi, hubungan, tren, dan susunan — memetakan ke bar chart, histogram, scatter plot, line chart, dan stacked bar.
  • Tipe data pada sumbu mempersempit pilihan: waktu mengarah ke garis, dua numerik ke scatter, satu numerik ke histogram.
  • Kesalahan umum yang perlu dijauhi: pie chart untuk banyak kategori, garis untuk kategori tanpa urutan, efek 3D, dan sumbu ganda yang memaksa korelasi.

Peta ini menuntun kita ke keluarga yang paling sering dipakai sehari-hari: perbandingan antar kategori. Chapter berikutnya, Grafik Perbandingan, membedah bar chart dari segala sisi — mulai dari urutan batang sampai label nilainya.

Referensi #

  1. Matplotlib — Plot Types — daftar resmi jenis plot matplotlib beserta contoh kodenya.
  2. Seaborn — Tutorial — pengantar berbasis fungsi plot statistik pada seaborn.