Skala adalah jembatan antara angka di dalam tabel dan piksel di layar. Topik ini menjelaskan skala sebagai fungsi pemetaan beserta jenis-jenisnya, memperlihatkan bagaimana pilihan skala mengubah bentuk cerita melalui demo linear dan logaritmik, lalu membahas panduan, yaitu sumbu, penanda tick, dan legenda yang menerjemahkan gambar kembali menjadi nilai. Setelah membacanya, keputusan tentang rentang sumbu dan penandanya dapat dibuat secara sengaja, bukan sekadar mengikuti bawaan alat.
Skala sebagai fungsi pemetaan#
Di balik setiap sumbu terdapat satu fungsi, yaitu skala (scale). Skala menerima nilai dari domain data dan mengembalikan posisi piksel pada rentang gambar. Untuk skala linear dengan nilai terkecil , nilai terbesar , dan lebar sumbu , pemetaannya ditulis sebagai berikut.
Rumus sederhana ini menjelaskan banyak perilaku yang sering dijumpai. Pada skala linear, selisih data yang sama bergerak sejauh piksel yang sama, sedangkan pada skala logaritmik, rasio yang sama diberi jarak piksel yang sama sehingga pertumbuhan beruntun menjadi garis lurus. Skala ordinal memberi setiap kategori jarak yang sama tanpa memperhatikan angkanya, dan skala waktu meletakkan tanggal pada garis yang beraturan. Pilihan jenis skala dengan demikian bukan soal selera, melainkan pernyataan tentang hubungan mana di dalam data yang dianggap penting.
Skala juga menyimpan keputusan tentang rentang. Domain ditentukan oleh nilai terkecil dan terbesar yang dianggap wajar untuk digambar, bukan semata oleh data yang ada, sehingga satu nilai ekstrem dapat direnggangkan atau diabaikan secara sengaja. Rentang tujuannya adalah luas area gambar yang tersedia untuk sumbu tersebut. Kedua ujung ini dapat disetel melalui argumen pembatas skala pada setiap library, dan grafik pada demo di bawah menyisakan sedikit ruang kosong di kedua ujungnya agar tanda tidak menempel pada tepi gambar.
Skala yang sama, cerita yang berbeda#
Contoh berikut menggunakan pertumbuhan eksponensial sintetis, yaitu saldo tabungan Rp 1.000.000 dengan bunga majemuk 6% per tahun yang digabungkan setiap bulan selama 120 bulan. Grafik yang sama digambar dua kali dalam satu gambar, panel kiri pada skala linear dan panel kanan pada skala logaritmik. Perhatikan label kedua sumbu vertikal, karena label itulah yang menyatakan transformasi yang diterapkan.
import matplotlib.pyplot as plt
import numpy as np
# pertumbuhan eksponensial sintetis: saldo tabungan dengan bunga majemuk
# 6% per tahun yang digabungkan setiap bulan, diukur selama 120 bulan
bulan = np.arange(0, 121)
saldo = 1_000_000 * (1 + 0.06 / 12) ** bulan
fig, (kiri, kanan) = plt.subplots(1, 2, figsize=(7, 3.5))
# panel kiri: skala linear
kiri.plot(bulan, saldo)
kiri.set_title("Skala linear", fontsize=10)
kiri.set_xlabel("Bulan ke-")
kiri.set_ylabel("Saldo (rupiah)")
# panel kanan: grafik yang sama pada skala logaritmik
kanan.plot(bulan, saldo)
kanan.set_yscale("log")
kanan.set_title("Skala logaritmik", fontsize=10)
kanan.set_xlabel("Bulan ke-")
kanan.set_ylabel("Saldo (rupiah, log)")
fig.tight_layout()
fig.savefig("skala-linear-log.svg")
print(f"bulan 0: Rp {saldo[0]:.0f}")
print(f"bulan 120: Rp {saldo[-1]:.0f}")
print("berkas skala-linear-log.svg tersimpan")bulan 0: Rp 1000000
bulan 120: Rp 1819397
berkas skala-linear-log.svg tersimpanAngka keluarannya menjelaskan perbedaan kedua panel. Saldo naik dari Rp 1.000.000 menjadi Rp 1.819.397, dan pada panel linear kenaikan itu terlihat seperti ledakan di bulan-bulan terakhir karena kenaikan mutlak bulanannya semakin besar. Pada panel logaritmik, laju pertumbuhan yang konstan per bulan membuat kurva menjadi garis lurus, sehingga ceritanya berubah menjadi kestabilan laju, bukan lonjakan akhir. Data yang digambar persis sama, sedangkan skala yang berbeda memilih aspek yang berbeda untuk ditonjolkan.
Panduan sebagai kontrak dengan pembaca#
Skala sendirian hanya memindahkan titik, sedangkan panduan (guide) menerjemahkannya kembali untuk pembaca. Sumbu adalah panduan untuk saluran posisi, yang terdiri atas garis sumbu, penanda tick (tick) pada nilai-nilai tertentu, dan label angka di bawahnya. Legenda adalah panduan untuk saluran warna dan bentuk, yang memetakan tampilan kembali menjadi kategori. Kontraknya sederhana, yaitu pembaca harus dapat mundur dari piksel ke nilai tanpa menebak, sehingga kualitas panduan diukur dari seberapa mudah langkah mundur itu dikerjakan.
Karena itu, dua keputusan kecil menentukan keterbacaan. Pertama, penanda tick ditempatkan pada nilai yang bermakna, misalnya kelipatan 1, 2, dan 5 untuk data harian atau pangkat sepuluh untuk skala log, bukan pada angka yang kebetulan muncul dari pembagian otomatis. Kedua, rentang sumbu dipilih secara sengaja, yaitu cukup longgar agar tanda terlihat utuh dan cukup ketat agar perbedaan kecil tidak tenggelam. Setiap library menyediakan argumen untuk kedua keputusan ini, dan dokumentasi plotly tentang sumbu merupakan contoh yang rapi, dengan rentang, titik penanda, dan label sebagai argumen yang terpisah.
Legenda mengikuti aturan yang sama dengan sumbu, tetapi sering dianggap sekadar pelengkap. Setiap saluran yang dipetakan dari data kategori, misalnya warna yang menyatakan kelas, memunculkan satu legenda yang harus dapat dibaca mundur dari warna ke label. Sebaliknya, apabila grafik hanya berisi satu kelompok dan judulnya sudah menjelaskan kelompok tersebut, legenda dapat dibuang karena panduan yang tidak menambah informasi hanya menambah beban baca.
Skala adalah keputusan penyajian yang tidak netral#
Karena skala memilih aspek yang ditonjolkan, pemilihannya tidak pernah sepenuhnya netral. Skala linear membuat tahap awal pertumbuhan tampak datar dan tahap akhir tampak dramatis, sedangkan skala log meredam perbedaan yang besar menjadi garis yang tenang. Rentang yang dipotong dapat menggelembungkan perbedaan kecil menjadi jurang, dan rentang yang terlalu luas dapat menghaluskannya menjadi lembah. Tidak ada pilihan yang netral secara mutlak, tetapi ada satu kewajiban yang pasti, yaitu transformasi yang diterapkan harus dinyatakan pada label sumbu, misalnya Saldo (rupiah, log), sehingga pembaca mengetahui kontrak bacaan yang berlaku.
Ringkasan#
- Skala memetakan nilai data ke piksel, dan jenisnya, yaitu linear, logaritmik, ordinal, dan waktu, menentukan hubungan mana yang terlihat.
- Panduan, yaitu sumbu, penanda tick, dan legenda, menerjemahkan piksel kembali menjadi nilai dan menjadi kontrak bacaan dengan pembaca.
- Pemilihan skala dan rentang adalah keputusan penyajian yang tidak netral, sehingga setiap transformasi wajib dinyatakan pada label sumbu.
Referensi#
- ggplot2: Elegant Graphics for Data Analysis — Hadley Wickham — Bab skala dan panduan menjelaskan pemetaan beserta sumbu dan legendanya.
- The Grammar of Graphics — Springer — Definisi formal skala sebagai pemetaan domain data ke rentang tampilan.
- Axes in Python — Plotly — Padanan praktis pengaturan rentang, penanda tick, dan label sumbu pada library lain.