Pemilihan Grafik

Mencocokkan pertanyaan analisis dengan bentuk visual yang menjawabnya.

Daftar isi

Grafik yang salah bentuk tetap berfungsi dan tetap tercetak, tetapi ia menjawab pertanyaan yang tidak diajukan. Topik ini menyusun keputusan pemilihan grafik dari pertanyaan analisisnya, memperagakan empat bentuk dasar pada data yang sama, dan menutupnya dengan tabel rujukan yang dipakai untuk seluruh laporan jalur ini. Setelah membacanya, satu pertanyaan selalu berujung pada satu bentuk yang paling menjawabnya.

Pertanyaan lebih dahulu daripada bentuk#

Pemilihan grafik dimulai dari kalimat pertanyaan, dan empat pertanyaan yang paling sering muncul pada analisis data membentuk empat keluarga bentuk. Pertanyaan kapan nilai naik turunnya dijawab garis, berapa nilainya per kelompok dijawab batang, bagaimana dua variabel terkait dijawab sebar, dan bagaimana sebarannya di dalam kelompok dijawab kotak.

Urutan tersebut bukan kebetulan, melainkan tipe pertanyaan yang berbeda, yaitu perubahan sepanjang waktu, perbandingan antar kategori, hubungan dua angka, dan distribusi. Skrip berikut menyandingkan keempatnya pada data pengukuran yang sama, sehingga kekuatan dan keterbatasan setiap bentuk terlihat berdampingan.

python pemilihan_grafik.py
"""Satu data, empat pertanyaan, empat bentuk grafik."""
import matplotlib

matplotlib.use("Agg")
import matplotlib.pyplot as plt
import pandas as pd

data = pd.read_csv(
    "ukuran_udara.csv",
    na_values=["kosong", "-999.0"],
    dtype={"pm25": "string", "kelembapan": "string"},
)
data["pm25"] = data["pm25"].astype("float")
data["waktu"] = pd.to_datetime(data["waktu"], format="mixed", dayfirst=True)
data["stasiun"] = (
    data["stasiun"].str.strip().str.replace(r"\s+", " ", regex=True).str.title()
)
sah = data[data["pm25"] < 500]

fig, axes = plt.subplots(2, 2, figsize=(7.6, 5.6), constrained_layout=True)

per_jam = sah.groupby(sah["waktu"].dt.floor("h"))["pm25"].mean()
axes[0, 0].plot(per_jam.index, per_jam.values, color="#4c72b0")
axes[0, 0].set_title("Kapan naik turunnya? garis")
axes[0, 0].tick_params(axis="x", rotation=45, labelsize=7)

per_stasiun = sah.groupby("stasiun")["pm25"].mean()
axes[0, 1].bar(per_stasiun.index, per_stasiun.values, color="#55a868", width=0.5)
axes[0, 1].set_title("Berapa per kelompok? batang")
axes[0, 1].set_ylim(0, 60)

axes[1, 0].scatter(sah["suhu_c"], sah["pm25"], s=14, alpha=0.6, color="#c44e52")
axes[1, 0].set_title("Bagaimana dua angka terkait? sebar")
axes[1, 0].set_xlabel("suhu (derajat Celsius)")

sah.boxplot(column="pm25", by="stasiun", ax=axes[1, 1])
axes[1, 1].set_title("Bagaimana sebarannya? kotak")
axes[1, 1].set_xlabel("")
fig.suptitle("")

fig.savefig("pemilihan-grafik.png", dpi=110)
print("tersimpan: pemilihan-grafik.png")
text Keluaran
tersimpan: pemilihan-grafik.png

Empat bentuk pada data yang sama
Empat bentuk pada data yang sama

Empat panel di atas memakai data yang sama, dan masing-masing menjawab pertanyaan yang berbeda dengan jujur. Panel garis memperlihatkan lonjakan pagi yang mengulang, panel batang membandingkan dua rata-rata dengan sumbu penuh, panel sebar memperlihatkan kenaikan perlahan terhadap suhu, dan panel kotak menunjukkan sebaran per stasiun yang hampir tak bertumpang tindih.

Tabel rujukan pemilihan#

Keputusan yang sama dirangkum menjadi tabel rujukan yang dipakai sepanjang jalur ini, dari laporan EDA sampai dek presentasi.

Pertanyaan analisisBentuk yang menjawabCatatan
Bagaimana perjalanannya sepanjang waktu?garissumbu waktu selalu mendatar dan penuh
Berapa nilainya per kelompok?batangsumbu nilai dimulai dari nol
Bagaimana dua angka terkait?sebarkorelasi menyertai, bukan menggantikan
Bagaimana sebaran per kelompok?kotak atau titikkelompok kecil ditampilkan sebagai titik
Bagaimana komposisi satu keseluruhan?batang bertumpuklingkaran hanya untuk sedikit kategori
Di mana letak perbedaan yang menonjol?heatmapwarna menyatakan nilai, bukan hiasan

Dua baris terakhir memperluas daftar tanpa mengubah prinsipnya. Komposisi yang dibaca sebagai persen dari keseluruhan cocok pada batang bertumpuk karena perbandingan tingginya tetap lurus, sedangkan lingkaran menuntut perbandingan sudut yang lebih sulit dibaca dan hanya adil untuk beberapa potongan yang jelas.

Heatmap menutup daftar untuk matriks ringkasan yang besar, misalnya rata-rata per stasiun per hari, dan warna yang dipetakan pada skala yang dinyatakan menjadikannya grafik yang sah, bukan dekorasi.

Dari grafik tunggal ke galeri laporan#

Laporan eksplorasi biasanya membutuhkan lebih dari satu grafik, dan prinsip pemilihan yang sama berlaku pada susunannya. Satu grafik menjawab satu pertanyaan, urutan grafik mengikuti urutan pertanyaan, dan judul setiap grafik menyatakan temuannya sehingga galeri dapat dibaca tanpa prosa yang panjang.

Pembacaan cepat juga menentukan bentuknya. Grafik untuk pemeriksaan sendiri boleh sekecil apa pun selama jujur, sedangkan grafik untuk laporan membawa kelengkapan dari modul matplotlib, dan grafik untuk presentasi menurunkan jumlah grafiknya drastis sebagaimana dibahas pada modul komunikasi.

Kebiasaan penutup yang murah adalah memeriksa setiap grafik dengan satu pertanyaan, yaitu “grafik ini menjawab pertanyaan apa”, dan menghapus grafik yang jawabannya tidak ditemukan.

Kesalahan umum#

Kesalahan pertama adalah grafik garis untuk kategori nominal. Garis menyatakan kesinambungan antar titik, sedangkan urutan kategori adalah hasil sortir, dan batang menjawab pertanyaan per kelompok dengan lebih jujur.

Kesalahan kedua adalah pie chart dengan banyak potongan. Sudut yang kecil sulit dibedakan dan warnanya cepat habis, sedangkan batang yang terurut menyajikan komposisi yang sama dengan pembacaan yang lebih mudah.

Kesalahan ketiga adalah memilih bentuk karena terlihat modern, misalnya heatmap kecil dengan sel sedikit atau grafik area yang saling menutupi. Bentuk yang dipilih mengikuti pertanyaan, dan tabel rujukan di atas sudah menutup sebagian besar kebutuhan.

Ringkasan#

  • Empat pertanyaan dasar, yaitu perjalanan waktu, perbandingan kelompok, hubungan dua angka, dan sebaran, memetakan ke garis, batang, sebar, dan kotak.
  • Batang bertumpuk dan heatmap memperluas daftar untuk komposisi dan matriks, dengan syarat skala yang dinyatakan.
  • Satu grafik menjawab satu pertanyaan, dan galeri laporan mengikuti urutan pertanyaannya.
  • Grafik yang tidak dapat menyebut pertanyaannya dihapus, sekecil apa pun biaya pembuatannya.

Referensi#