Sebuah rekap penjualan setebal sepuluh halaman bisa diringkas menjadi satu grafik yang terbaca dalam lima detik — itulah alasan visualisasi data menjadi keterampilan inti data science. Sistem persepsi manusia memproses panjang, posisi, dan warna hampir seketika, jauh lebih cepat daripada membaca barisan angka. Namun kecepatan yang sama juga membuat grafik yang dirakit sembarangan menyampaikan kesan yang berbeda dari data aslinya. Pada chapter ini kita membedah prinsip-prinsip dasar visualisasi: dua perannya dalam alur kerja data, hierarki ketepatan persepsi, serta kejujuran dan aksesibilitas — bekal yang kita pakai di seluruh chapter praktik pada Section ini.
Dua Peran Visualisasi: Eksplorasi dan Komunikasi #
Visualisasi bekerja pada dua momen yang berbeda dalam satu analisis. Saat eksplorasi, kita menggambar untuk diri sendiri: memeriksa sebaran transaksi, mencari nilai pencilan, atau mencocokkan dugaan dengan kenyataan. Saat komunikasi, kita menggambar untuk audiens: atasan, klien, atau pembaca laporan yang perlu diyakinkan dalam waktu singkat. Kedua peran tersebut menuntut prioritas yang berbeda:
| Aspek | Eksplorasi (untuk diri sendiri) | Komunikasi (untuk audiens) |
|---|---|---|
| Tujuan | memahami data, menemukan pola dan anomali | menyampaikan temuan menjadi keputusan |
| Prioritas | cepat dibuat, mudah diubah | jelas, jujur, bebas gangguan |
| Jumlah grafik | sebanyak perlu, boleh dibuang setelah dipahami | sedikit dan terpilih |
| Standar tampilan | boleh seadanya | lengkap: judul, label, satuan, sumber |
Keduanya memakai library yang sama — matplotlib dan seaborn yang kita pakai sepanjang Section ini. Kesalahan yang paling sering terjadi bukan pada teknis pembuatannya, melainkan pada kegagalan memisahkan dua peran tersebut: grafik eksplorasi yang buram, tanpa judul, dan tanpa satuan dibawa mentah-mentah ke ruang presentasi. Grafik yang bagus untuk eksplorasi adalah grafik tercepat dibuat; grafik yang bagus untuk komunikasi adalah grafik yang bisa berdiri sendiri tanpa penjelasan lisan.
Hierarki Persepsi: Tidak Semua Tanda Visual Setara #
Otak kita membaca tanda visual dengan tingkat ketepatan yang berbeda. Riset klasik persepsi grafik (Cleveland dan McGill, 1984) menunjukkan bahwa manusia paling tepat menilai posisi pada skala bersama dan panjang, lalu menurun ketika membaca sudut, area, dan warna. Urutan ini menjelaskan mengapa bar chart selalu lebih mudah dibaca daripada pie chart:
| Tanda visual | Wujud di grafik | Ketepatan persepsi |
|---|---|---|
| Posisi pada skala bersama | titik pada scatter plot | paling akurat |
| Panjang | tinggi batang pada bar chart | sangat akurat |
| Sudut | juring pada pie chart | sedang |
| Area | besar kecilnya gelembung | rendah |
| Warna (hue) | kategori dengan warna berbeda | hanya identitas, bukan besar-kecil |
Satu pengecualian justru memperkuat aturan ini: atribut preattentive. Satu elemen yang berbeda secara mencolok dari sekelompok elemen seragam — misalnya satu batang biru di antara batang abu-abu — tertangkap mata bahkan sebelum kita sadar sedang membaca grafik. Kekuatan itu justru harus dipakai hemat: paling satu titik perhatian per grafik, dialokasikan untuk pesan utama yang memang ingin kita sampaikan.
Warna berperan sebagai penanda identitas kategori, bukan pembawa besar-kecil nilai. Pembaca bisa membedakan biru dari hijau dengan cepat, tetapi tidak bisa menghafal bahwa “hijau tua berarti 28 dan hijau muda berarti 19” tanpa membaca legend berkali-kali.
Kejujuran dan Aksesibilitas Grafik #
Grafik yang jujur memenuhi satu ujian sederhana: pembaca yang menatapnya harus sampai pada kesimpulan yang sama dengan pembaca yang membaca angka aslinya. Untuk itu ada beberapa syarat yang selalu kita periksa. Panjang batang harus proporsional terhadap nilai, artinya sumbu batang dimulai dari nol. Satuan wajib tercantum pada judul atau label sumbu — “28” tanpa satuan bisa berarti 28 gelas atau 28 juta rupiah. Periode data dan sumbernya juga perlu bisa dilacak, paling tidak disebutkan di sekitar grafik.
Aksesibilitas berarti grafik tetap terbaca oleh semua pembaca. Sekitar satu dari dua belas pria memiliki keterbatasan persepsi warna merah-hijau, sehingga informasi penting tidak boleh ditumpangkan hanya pada warna. Solusinya sederhana: kombinasikan warna dengan label langsung, penanda bentuk yang berbeda, atau urutan yang bisa diikuti. Kontras antara elemen grafik dan latar belakang juga perlu cukup, terutama bila grafik dicetak hitam-putih.
Praktik: Membuat Grafik yang Mudah Dibaca #
Kita pakai data Toko Kopi Kita: penjualan empat menu selama sepekan. Sebelum menggambar, kita coba dulu membacanya sebagai teks agar terasa bedanya.
produk = ["kopi susu", "matcha latte", "teh tawar", "cokelat panas"]
gelas = [28, 19, 12, 9]
print("Rekap penjualan sepekan:")
for nama, jumlah in zip(produk, gelas):
print(f" {nama:16s} {jumlah:2d} gelas")
print()
print("Produk terlaris :", produk[gelas.index(max(gelas))])
print("Selisih terlaris-terendah:", max(gelas) - min(gelas), "gelas")Output yang Dihasilkan:
Rekap penjualan sepekan:
kopi susu 28 gelas
matcha latte 19 gelas
teh tawar 12 gelas
cokelat panas 9 gelas
Produk terlaris : kopi susu
Selisih terlaris-terendah: 19 gelasMari kita telaah baris-barisnya:
- Baris 6-7 (
for nama, jumlah ...):zip()memasangkan tiap menu dengan angka penjualannya, lalu f-string meratakannya agar kolomnya sejajar — teks yang sesederhana apa pun tetap kalah cepat dibanding gambar. - Baris 10 (
produk[gelas.index(max(gelas))]): untuk menemukan menu terlaris, kita harus mencari nilai terbesar lalu melacak posisinya — pekerjaan yang otomatis dilakukan mata pada sebuah bar chart. - Baris 11: selisih 19 gelas baru terasa setelah dihitung; pada grafik, jarak itu langsung terlihat sebagai beda tinggi batang.
Sekarang kita gambar data yang sama, dengan satu titik perhatian pada menu terlaris:
import matplotlib.pyplot as plt
produk = ["kopi susu", "matcha latte", "teh tawar", "cokelat panas"]
gelas = [28, 19, 12, 9]
warna = ["lightgray"] * len(produk)
warna[gelas.index(max(gelas))] = "tab:blue" # aksen untuk menu terlaris
fig, ax = plt.subplots(figsize=(6, 3.5))
ax.bar(produk, gelas, color=warna)
ax.set_title("Penjualan Toko Kopi Kita Sepekan")
ax.set_xlabel("Menu")
ax.set_ylabel("Gelas terjual")
plt.show()Gambar yang muncul memuat empat batang: satu batang biru untuk kopi susu yang tertinggi di 28 gelas, dan tiga batang abu-abu untuk matcha latte (19), teh tawar (12), serta cokelat panas (9) yang terpendek. Perhatian pembaca jatuh lebih dulu ke batang biru — persis efek preattentive yang kita bahas — lalu mata meluncur membandingkan tinggi batang abu-abu tanpa perlu membaca satu angka pun. Tiga pelengkap membuat grafik ini berdiri sendiri: judul yang menyebut konteks, label sumbu, dan satuan “gelas” yang menempel pada label.
Satu contoh lagi menunjukkan peran anotasi. Berikut penjualan kopi susu hari per hari selama sepekan:
import matplotlib.pyplot as plt
hari = ["Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu"]
kopi_susu = [14, 16, 13, 19, 17, 26, 24]
fig, ax = plt.subplots(figsize=(6, 3.5))
ax.plot(hari, kopi_susu, marker="o", color="tab:blue")
ax.set_title("Penjualan Kopi Susu Sepekan")
ax.set_xlabel("Hari")
ax.set_ylabel("Gelas terjual")
ax.annotate("tertinggi: 26 gelas", xy=("Sabtu", 26), xytext=(0.4, 25.2),
arrowprops=dict(arrowstyle="->"))
plt.show()Grafiknya berupa satu garis biru yang menghubungkan tujuh titik berpenanda lingkaran: penjualan bergerak di kisaran 13-19 gelas pada hari Senin sampai Jumat, lalu melonjak ke puncak 26 gelas pada Sabtu dan sedikit turun ke 24 pada Minggu. Teks kecil “tertinggi: 26 gelas” dengan panah mengarahkan mata ke titik terpenting, sehingga pembaca tidak perlu memindai seluruh sumbu tegak untuk menemukannya. Inilah pola kerja yang akan kita ulang sepanjang Section ini: data yang tepat, satu pesan yang jelas, lalu pelengkap yang mengurangi pekerjaan pembaca.
Rangkuman #
- Visualisasi punya dua peran: eksplorasi untuk memahami data sendiri, dan komunikasi untuk menyampaikan temuan kepada audiens — keduanya menuntut prioritas berbeda.
- Persepsi manusia paling tepat membaca posisi dan panjang; sudut, area, dan warna kurang tepat — karena itu bar chart mengungguli pie chart.
- Atribut preattentive seperti satu batang beraksen menarik perhatian seketika; pakai hemat untuk satu pesan utama.
- Grafik yang jujur menjaga proporsi (sumbu batang dari nol), mencantumkan satuan, dan tetap terbaca tanpa bergantung pada warna semata.
- Judul, label sumbu, satuan, dan anotasi adalah pelengkap yang membuat grafik berdiri sendiri.
Prinsip-prinsip ini adalah kompas kita; alat gambar menyusul pada chapter-chapter berikutnya. Langkah pertama yang paling menentukan bukan memilih warna, melainkan memilih jenis grafik — keputusan yang kita latih pada chapter Memilih Jenis Grafik.
Referensi #
- Matplotlib — User’s Guide — panduan resmi penggunaan matplotlib, termasuk filosofi di balik tiap jenis plot.
- Matplotlib — Plot Types — galeri resmi jenis grafik beserta kode minimalnya.