Topik ini menempatkan pilihan grafik di dalam bingkai kisah (storytelling), yaitu rangkaian keputusan yang berawal dari pertanyaan analisis dan berakhir pada satu pesan utama. Alur kerjanya terdiri atas tiga langkah, yaitu merumuskan pertanyaan, memilih pesan, lalu menetapkan pemetaan data ke saluran visual (encoding). Dua grafik dari dataset yang sama dibangun untuk menunjukkan bahwa pilihan grafik adalah keputusan penyajian yang mengarahkan pembacaan data.
Bingkai kisah: pertanyaan, pembaca, dan pesan#
Sebelum sebuah grafik dipilih, tiga pertanyaan perlu dijawab lebih dahulu. Pertanyaan pertama menyangkut analisis, yaitu hal apa pada data yang perlu dijawab. Pertanyaan kedua menyangkut pembaca, yaitu siapa yang akan membaca grafik dan keputusan apa yang diambilnya setelah membaca. Pertanyaan ketiga menyangkut pesan, yaitu satu kalimat yang menyimpulkan temuan untuk pembaca tersebut.
Satu pesan utama berarti satu, bukan tiga. Grafik yang mencoba menyampaikan beberapa pesan sekaligus memaksa pembaca memilih sendiri penekanannya, dan pilihan itu sering jatuh pada hal yang tidak disengaja pembuatnya. Praktik penceritaan data yang dipopulerkan buku Storytelling with Data karya Cole Nussbaumer Knaflic menempatkan audiens dan satu pesan sebagai dasar sebelum alat gambar apa pun dibuka. Karena pesan sudah tertulis dalam satu kalimat, pilihan grafik berubah menjadi persoalan mencari encoding yang menyampaikan kalimat itu paling langsung.
Pesan yang berbeda pada data yang sama membutuhkan grafik yang berbeda. Dataset nilai ujian jalur ini memuat nilai literasi dan nilai matematika 24 siswa dari dua kelas. Apabila pesannya adalah hubungan literasi dan matematika, grafik yang tepat adalah diagram sebaran (scatter) karena posisi tiap titik membawa pasangan nilai. Apabila pesannya adalah kesenjangan antarkelas, grafik yang tepat adalah diagram batang rata-rata karena panjang batang membandingkan kelompok. Keduanya benar secara hitungan, tetapi keduanya melayani pembaca yang berbeda dengan keputusan yang berbeda.
Dua grafik dari satu dataset#
Skrip pilihan_grafik.py membaca dataset kanonik jalur, nilai_ujian.csv, yang telah disalin ke dalam bundle topik ini, lalu menyimpan dua berkas SVG beserta angka pendukungnya. Pesan pertama menghasilkan diagram sebaran literasi terhadap matematika. Pesan kedua menghasilkan diagram batang rata-rata matematika per kelas, dengan dasar sumbu yang ditegaskan berawal dari nol melalui ax.set_ylim(0, 100). Jalankan skrip berikut dari direktori topiknya.
import csv
import matplotlib.pyplot as plt
import numpy as np
with open("nilai_ujian.csv", newline="", encoding="utf-8") as f:
baris = list(csv.DictReader(f))
literasi = [int(r["nilai_literasi"]) for r in baris]
matematika = [int(r["nilai_matematika"]) for r in baris]
kelas = [r["kelas"] for r in baris]
kelas_unik = sorted(set(kelas))
# Pesan 1: literasi dan matematika bergerak bersama -> diagram sebaran
fig, ax = plt.subplots(figsize=(6, 3.5))
ax.scatter(literasi, matematika)
ax.set_xlabel("Nilai literasi")
ax.set_ylabel("Nilai matematika")
fig.savefig("sebaran-pesan.svg")
korelasi = np.corrcoef(literasi, matematika)[0, 1]
print("pesan 1: korelasi literasi-matematika =", round(float(korelasi), 2))
# Pesan 2: kesenjangan antarkelas pada matematika -> batang rata-rata berawal nol
rata = []
for c in kelas_unik:
nilai_c = [m for m, k in zip(matematika, kelas) if k == c]
rata.append(sum(nilai_c) / len(nilai_c))
fig, ax = plt.subplots(figsize=(6, 3.5))
batang = ax.bar(kelas_unik, rata, width=0.5)
ax.set_ylim(0, 100)
ax.set_ylabel("Rata-rata nilai matematika")
ax.bar_label(batang, fmt="%.2f")
fig.savefig("kesenjangan-pesan.svg")
print("pesan 2: rata-rata matematika per kelas =", [round(v, 2) for v in rata])
print("pesan 2: selisih antarkelas =", round(rata[0] - rata[1], 2), "poin")pesan 1: korelasi literasi-matematika = 0.86
pesan 2: rata-rata matematika per kelas = [81.42, 77.58]
pesan 2: selisih antarkelas = 3.83 poinPola titik pada sebaran-pesan.svg naik dari kiri bawah ke kanan atas, dan keluaran skrip mencetak korelasi 0.86 sebagai penanda kuantitatifnya. Grafik ini melayani pembaca yang bertanya tentang hubungan dua nilai, misalnya guru bahasa Indonesia yang mengusulkan penguatan literasi agar nilai matematika ikut terangkat. Peringkat Cleveland dan McGill atas akurasi saluran visual menempatkan posisi pada skala umum sebagai saluran yang paling akurat dibaca, dan diagram sebaran menggunakan saluran tersebut.
Pada kesenjangan-pesan.svg, dua batang membandingkan rata-rata matematika kelas 7A sebesar 81.42 dan kelas 7B sebesar 77.58, dengan label nilai di atas tiap batang. Selisih yang dicetak skrip sebesar 3.83 poin. Grafik ini melayani pembaca yang mengambil keputusan alokasi, misalnya kepala sekolah yang memilih kelas penerima bimbingan tambahan. Dasar sumbu ditegaskan berawal dari nol agar panjang batang proporsional terhadap nilai, karena selisih tiga poin pada skala seratus poin bukan kesenjangan besar dan batang yang jujur menampilkannya seadanya.
Kerangka kerja dari pertanyaan ke grafik#
Tabel berikut merangkum bingkai kisah menjadi kerangka kerja yang diisi sebelum kode ditulis. Kolom pertanyaan memandu eksplorasi, kolom pembaca menegaskan siapa yang mengambil keputusan, kolom pesan memaksakan satu kalimat, dan kolom grafik menetapkan encodingnya. Dua baris pertama adalah dua pesan yang dikerjakan skrip pada bagian sebelumnya, sedangkan baris ketiga mencontohkan pertanyaan kehadiran yang terjawab oleh korelasi 0.97 antara persentase kehadiran dan nilai matematika pada dataset yang sama.
| Pertanyaan analisis | Pembaca dan keputusannya | Pesan utama | Grafik yang tepat |
|---|---|---|---|
| Apakah literasi berkaitan dengan matematika? | Guru yang menyusun program penguatan literasi | Literasi dan matematika bergerak bersama | Diagram sebaran |
| Seberapa besar kesenjangan antarkelas? | Kepala sekolah yang mengalokasikan bimbingan | 7A unggul 3.83 poin di atas 7B pada matematika | Diagram batang rata-rata berawal dari nol |
| Apakah kehadiran berkaitan dengan nilai? | Wali kelas yang menyusun pembinaan kehadiran | Siswa yang lebih hadir cenderung bernilai lebih tinggi | Diagram sebaran kehadiran terhadap nilai |
Kerangka ini memindahkan keputusan utama ke tempat yang murah untuk diperbaiki, yaitu sebelum kode ditulis. Mengubah pesan pada tabel hanya membutuhkan penyuntingan satu baris, sedangkan mengubahnya setelah grafik jadi berarti mengulang pilihan encoding, judul, dan anotasi sekaligus. Pada proyek yang benar-benar dikerjakan, tabel berisi tiga sampai lima baris sudah cukup untuk satu laporan karena setiap barisnya menjadi satu grafik.
Ringkasan#
- Bingkai kisah berurutan dari pertanyaan analisis, pembaca beserta keputusannya, satu pesan utama, lalu pilihan grafik sebagai encoding pesan tersebut.
- Data yang sama melayani pesan berbeda melalui grafik berbeda, yaitu diagram sebaran untuk hubungan literasi dan matematika dengan korelasi 0.86, serta diagram batang berawal dari nol untuk kesenjangan 3.83 poin antarkelas.
- Kerangka kerja pertanyaan sampai grafik ditulis dalam tabel sebelum kode, sehingga perubahan pesan tetap murah dilakukan.
Referensi#
- Graphical perception: Theory, experimentation, and application to the development of graphical methods — Cleveland & McGill, Journal of the American Statistical Association — Peringkat akurasi saluran visual yang menjadi dasar memilih posisi titik dan panjang batang untuk pesan tertentu.
- Quick start guide — Matplotlib — Pola antarmuka berorientasi objek fig dan ax yang digunakan seluruh skrip topik ini.
- Storytelling with Data — Cole Nussbaumer Knaflic — Buku yang mempopulerkan penempatan audiens dan satu pesan utama sebelum pilihan grafik.