Teman Tidak Akan Membiarkan Anda Membuat Visualisasi Data Seperti Ini — 16 Jenis Grafik Buruk dan Alasannya
(github.com/cxli233)- Repositori GitHub yang merangkum 16 praktik visualisasi yang keliru yang sering digunakan dalam makalah ilmiah dan analisis data, lengkap dengan contoh; setiap kasus dapat direproduksi langsung lewat kode R dan data simulasi
- Secara spesifik menunjukkan visualisasi yang mendistorsi distribusi dan karakteristik data, seperti penyalahgunaan grafik batang untuk membandingkan rata-rata, violin plot pada sampel kecil, dan penggunaan skala warna dua arah untuk data satu arah
- Menjelaskan masalah pada jenis grafik yang tidak mempertimbangkan karakteristik persepsi visual manusia, seperti tidak mengurutkan ulang baris/kolom heatmap, tidak memeriksa outlier, serta keterbatasan mendasar pie chart dan donut chart konsentris
- Mencakup peringatan tentang kesalahan desain struktural yang memicu salah tafsir, seperti mencampuradukkan visualisasi berbasis posisi dan berbasis panjang, serta grafik batang dengan sumbu terpotong
- Sebagai kumpulan antipola praktis yang dapat dijadikan referensi oleh semua peneliti dan developer yang menangani visualisasi data, dengan alternatif metode visualisasi untuk tiap poin
1. Jangan membandingkan rata-rata dengan grafik batang
- Plot perbandingan rata-rata (means separation) adalah salah satu visualisasi paling umum dalam makalah ilmiah, dengan tujuan menampilkan rata-rata, varians, dan distribusi dari dua grup atau lebih
- Dalam contoh, dua grup memiliki rata-rata dan simpangan baku yang serupa, tetapi distribusinya sama sekali berbeda — perbedaan ini tidak dapat dideteksi hanya dengan grafik batang
- Sebelum menggunakan grafik batang, distribusi data harus selalu diperiksa; Weissgerber et al. (2015, PLOS Biology) juga menunjukkan keterbatasan grafik batang
2. Jangan menggunakan violin plot pada sampel kecil
- Violin plot atau kurva distribusi yang dihaluskan tidak bermakna ketika ukuran sampel kecil
- Pada sampel kecil, distribusi dan kuartil dapat berubah besar meski nilai pengamatannya sama; agar kuartil stabil, diperlukan n minimal 50
- Hal ini dibuktikan lewat eksperimen yang mengambil sampel berulang kali dari distribusi normal yang sama lalu membandingkan kuartilnya
3. Jangan menggunakan skala warna dua arah untuk data satu arah
- Dalam skala warna, warna paling gelap dan paling terang harus merepresentasikan nilai yang bermakna, seperti nilai maksimum, minimum, rata-rata, atau 0
- Jika warna paling terang atau paling gelap merepresentasikan angka arbitrer, itu adalah kesalahan seserius “batang terpanjang pada bar chart bukan nilai maksimum”
- Saat menggunakan heatmap/gradien warna, memilih skala warna yang sesuai dengan arah data (satu arah vs dua arah) adalah hal wajib
4. Jangan membuat padang rumput grafik batang (Bar Plot Meadow)
- Jika hasil eksperimen multifaktor dijajarkan sebagai grafik batang, hasilnya menjadi “padang rumput grafik batang” yang tidak efektif untuk menyampaikan temuan
- Untuk menyampaikan hasil eksperimen multifaktor secara efektif, pengelompokan/faceting harus dirancang dengan cermat berdasarkan faktor yang menjadi perhatian
- Contoh membandingkan pengaruh Treatment dan Explant terhadap Response pada level Variety, serta menekankan bahwa layout harus berubah sesuai fokus analisis
5. Jangan mengabaikan pengurutan ulang baris/kolom heatmap
- Heatmap sangat umum dalam makalah ilmiah, terutama makalah omics, tetapi tanpa mengurutkan ulang baris dan kolom, informasi yang berguna tidak dapat diekstraksi
- Pengurutan ulang dengan clustering adalah cara yang umum, tetapi bukan satu-satunya; jika heatmap merepresentasikan tata letak fisik seperti 96-well plate, pengurutan ulang tidak dapat dilakukan
- Menggabungkan pengurutan ulang baris/kolom dengan gradien warna yang tepat dapat menghasilkan heatmap yang juga indah secara visual
6. Jangan lupa memeriksa outlier pada heatmap
- Outlier dapat sepenuhnya mengubah persepsi dan interpretasi heatmap, dan ini adalah masalah yang berlaku pada semua visualisasi yang merepresentasikan data numerik dengan warna
- Dalam contoh, 2 observasi yang mengukur 20 fitur tampak serupa secara keseluruhan ketika outlier tidak diperiksa, tetapi jika skala warna disesuaikan berdasarkan persentil ke-95, perbedaan pada semua fitur menjadi terlihat
7. Periksa rentang data untuk setiap level faktor
- Dalam eksperimen multifaktor, rentang variabel respons sering kali berbeda besar menurut level faktor
- Dalam eksperimen hipotetis yang mengukur 3 senyawa pada 2 grup (kontrol vs perlakuan), rentang konsentrasi senyawa 1 jauh lebih sempit dibanding senyawa lain, sehingga ada risiko melewatkan efek perlakuan
- Jika rentang data untuk tiap senyawa tidak diperiksa sebelumnya, efek perlakuan yang penting dapat terabaikan
8. Coba beberapa layout pada grafik jaringan
- Tampilan luar grafik jaringan (layout, bukan topologi) sangat memengaruhi efektivitasnya
- Dari data yang sama, 3 grafik jaringan terlihat sepenuhnya berbeda, dan disertakan juga contoh penerapan 9 layout yang berbeda
- Karena tingkat kesulitan interpretasi jaringan sangat berubah tergantung layout, beberapa layout perlu dicoba
9. Jangan mencampuradukkan visualisasi berbasis posisi dan berbasis panjang
- Pada grafik titik/garis, nilai direpresentasikan oleh posisi pada sumbu x dan y; pada grafik batang, nilai direpresentasikan oleh jarak (panjang) dari sumbu x
- Dalam contoh, grafik batang yang tidak dimulai dari 0 membuat panjang batang pada waktu 2 tampak sekitar 3 kali waktu 1, padahal perbedaan rata-rata sebenarnya sekitar 1,6 kali — mencampuradukkan panjang dan posisi menghasilkan grafik yang menyesatkan
-
Waspadai grafik batang dengan sumbu terpotong (Broken Axis)
- Pemotongan sumbu berguna saat menampilkan nilai dengan rentang lebar (alternatifnya dapat menggunakan sumbu skala log), tetapi hanya tepat untuk grafik berbasis posisi
- Jika posisi pemotongan sumbu pada grafik batang diubah, muncul ilusi optik yang membuat batang tertentu terlihat lebih panjang atau lebih pendek
- Dalam contoh, panjang batang “d” terlihat sangat berbeda tergantung posisi pemotongan sumbu, karena grafik batang adalah grafik berbasis panjang
10. Jangan membuat pie chart
- Pie chart menampilkan data proporsi dengan membagi lingkaran menjadi sektor, tetapi manusia jauh lebih baik membaca panjang dibanding sudut dan luas
- Dalam contoh 2 grup dengan masing-masing 4 subkategori, pie chart membuat perbandingan antargrup sangat sulit
- Meski disederhanakan menjadi donut chart, data tetap direpresentasikan dengan panjang busur; lebih baik donut itu “dibentangkan” menjadi stacked bar graph agar perbandingan jauh lebih efektif
- Di ggplot, skrip untuk pie chart dan donut chart justru lebih rumit daripada stacked bar
11. Jangan membuat donut chart konsentris
- Pada donut konsentris, mudah mengira data direpresentasikan oleh panjang busur, tetapi sebenarnya direpresentasikan oleh sudut busur, dan manusia lemah dalam membaca sudut busur
- Panjang busur pada cincin luar jauh lebih panjang daripada cincin dalam, sehingga meski Group 2 dan Group 3 memiliki nilai yang sama, panjang busur Group 3 tampak jauh lebih panjang
- Urutan grup (grup mana ditempatkan pada cincin mana) sangat memengaruhi kesan plot, sehingga dapat muncul paradoks nilai yang lebih besar memiliki busur yang lebih pendek
- Masalah yang sama berlaku pada layout melingkar seperti circos plot; alternatifnya cukup membentangkan donut menjadi stacked bar plot
12. Jangan menggunakan skala warna merah/hijau dan pelangi
- Buta warna merah-hijau (Deuteranomaly) adalah jenis buta warna paling umum, terjadi pada 1/16 pria dan 1/256 wanita
- Skala warna merah/hijau dan pelangi bermasalah bagi pengguna buta warna, dan saat dicetak hitam-putih, pelestarian informasinya sangat buruk
- Skala warna “modern” seperti viridis ramah buta warna sekaligus aman dalam grayscale, serta unggul secara visual
13. Jangan lupa mengurutkan ulang stacked bar plot
- Stacked bar plot umum digunakan untuk memvisualisasikan data proporsi, struktur komunitas, struktur populasi, dan admixture analysis
- Dalam contoh 100 sampel dan 8 kelas, jika urutan batang tidak dioptimalkan, tidak ada pola yang dapat diidentifikasi dari grafik
- Setelah batang diurutkan ulang, pola muncul secara dramatis; pengelompokan sampel dan optimasi pengurutan adalah kuncinya
14. Jangan mencampur stacked bar dengan perbandingan rata-rata
- Stacked bar plot digunakan untuk data proporsi yang dijumlahkan menjadi 100%, sedangkan plot perbandingan rata-rata menunjukkan perbedaan rata-rata dan varians; keduanya adalah tugas visualisasi yang sama sekali berbeda
- Dalam contoh eksperimen tanaman blueberry, stacked bar plot standar dengan jelas menunjukkan bahwa perlakuan kimia menggeser profil warna buah secara kuat ke tahap paling matang (dark blue)
- Jika error bar dan titik dioverlay di atas stacked bar, menjadi tidak jelas error bar dan titik mana yang dibandingkan, dan error bar pada stack bagian atas terdorong ke atas sehingga interpretasi sumbu y tidak intuitif
- Jika tujuan utama visualisasi adalah perbandingan rata-rata dan varians, grafik perbandingan rata-rata terpisah lebih tepat
15. Jangan menggunakan histogram pada sampel kecil
- Histogram kadang diusulkan sebagai pengganti grafik batang, tetapi ketahanannya terhadap jumlah bin sangat rendah pada sampel kecil
- Jika mengambil sampel dari distribusi normal yang sama dengan n = 10, 100, 1000 lalu menggambar histogram dengan 10, 30, 50 bin, bentuk histogram sangat berbeda meski distribusinya sama
- Pada sampel kecil (n < 30), jauh lebih baik menampilkan semua titik data secara langsung pada grafik; bahkan pada n = 100, tampilan histogram berubah drastis tergantung jumlah bin
- Agar histogram menjadi robust terhadap perubahan jumlah bin, ukuran sampel sekitar 1000 atau lebih diperlukan
16. Jangan menggunakan boxplot untuk data berdistribusi bimodal
- Boxplot berfokus pada median dan kuartil, sehingga tidak dapat merepresentasikan data berdistribusi bimodal (dan multimodal) dengan baik
- Sebelum membuat boxplot, distribusi data harus selalu diperiksa
- Untuk ukuran sampel kecil hingga menengah (kurang dari puluhan ribu), praktik terbaik adalah menggunakan
geom_quasirandom()dari paket ggbeeswarm untuk menampilkan semua titik data secara langsung - Grafik berbasis distribusi seperti violin plot dan histogram tidak robust pada sampel kecil
2 komentar
Judul artikelnya menarik. Kalau melihat artikel aslinya, ada grafik contoh yang ditampilkan bersama sehingga lebih mudah dipahami.
Komentar Hacker News
Di satu sisi, isi seperti ini terlihat cukup bagus
Di sisi lain, banyak dari grafik buruk semacam ini tampaknya sengaja dipilih untuk menyembunyikan sedikitnya titik data atau distribusi dasar yang mencurigakan
Jadi, alih-alih “kalau teman, kita akan mencegah orang membuat yang seperti ini”, lebih tepatnya “kalau melihat grafik yang membuat sesuatu menjadi kabur alih-alih jelas, curigailah bahwa itu mungkin disengaja”
Dari makalah yang pernah saya ikuti, tidak ada satu pun yang sikapnya bukan “terbitkan sekarang juga”
Alasan grafik tidak jelas sering kali karena membuatnya jelas butuh waktu dan usaha, sementara di dunia akademik keduanya sangat kurang. Tentu kadang ada juga yang sengaja menyembunyikan detail buruk, tetapi saya tidak melihat itu sebagai sumber utama gambar-gambar buruk seperti itu
Sebagian kelompok tidak perlu membangunkan anjing yang sedang tidur, sementara kelompok lain memang tidak tahu. Ada juga orang yang seharusnya tidak melakukan riset, tetapi pelatihannya kurang, dan tenaga doktor murah juga tidak mudah didapat, sehingga jadilah seperti sekarang
Contoh “teman tidak akan membiarkanmu membuat heatmap yang tidak menjadikan outlier sebagai nilai maksimum” benar-benar umum. Ini juga sering terlihat dalam visualisasi statistik video game
Dalam game strategi/simulasi, ada banyak visualisasi yang membantu pemain memahami situasi atau masalah, tetapi heatmap sering kali membuat gradasi warna menjadi cukup tidak berguna karena efek outlier
Misalnya, di Oxygen Not Included, saat visualisasi suhu dinyalakan, jika ada sumber panas seperti gunung berapi, semua warna lain terlihat dingin, sehingga layar sering hanya berubah menjadi biru atau merah muda kemerahan. Gunung berapi 1000°C dan ruang uap 270°C yang agak terlalu panas tidak bisa dibedakan; keduanya menjadi merah muda kemerahan yang hampir seragam. Basis 60°C yang terlalu panas pun terlihat biru karena relatif dingin, jadi sebagai heatmap untuk mendiagnosis masalah suhu, ini hampir tidak berguna
Sebenarnya, membiarkan makna warna berubah mengikuti perubahan suhu terdengar seperti ide yang cukup buruk
Itu berfungsi sebagai peringatan hotspot, sekaligus sebagai pengingat untuk mengabaikannya, jadi sangat berguna
Dulu di HN pernah ada perdebatan panas karena seseorang mengatakan semua grafik yang nilai minimum semua sumbunya bukan 0 itu menyesatkan
Saat itu sedang membahas grafik kenaikan suhu global akibat perubahan iklim, dan orang itu bilang grafiknya misleading karena sumbu Y, yaitu suhu, tidak dimulai dari 0. Entah 0 derajat Fahrenheit, 0 derajat Celsius, atau sialnya 0 Kelvin
Bahkan dia juga berkata, “kalau perubahannya tidak terlihat saat batas bawahnya dibuat 0, mungkin perubahan itu tidak terlalu signifikan?” Untuk sementara keyakinan saya terhadap kemanusiaan sempat remuk, tetapi saya lega sekarang pembahasannya tampaknya berada di tingkat yang lebih tinggi. Tahun 2016–2020 rasanya seperti zaman lain
Grafik yang membuat 25°C terlihat seperti “25% lebih panas” daripada 20°C bisa dibilang menyesatkan dalam arti itu. Tentu saja ini tidak membenarkan penyangkalan pemanasan global
Misalnya grafik pertama yang saya temukan adalah ini: https://religionnews.com/wp-content/uploads/2014/08/61Years-...
Sekilas terlihat seperti turun 2/3, dan itu menyesatkan. Grafik penurunan seperti ini sering memberi kesan visual yang tidak mencerminkan besarnya penurunan sebenarnya
Jika ingin membaca lebih lanjut tentang visualisasi data, The Visual Display of Quantitative Information karya Edward Tufte adalah referensi yang sangat bagus. Ini klasik yang pertama kali terbit pada 1983, tetapi masih relevan sampai sekarang
Namun premis utama tulisan itu, “maksimalkan rasio tinta terhadap informasi”, terdengar sangat masuk akal tetapi pada dasarnya cacat. Sebab jumlah tinta—di layar, jumlah piksel hitam—tidak sama dengan kompleksitas visual. Saat otak menafsirkan informasi visual, ia sudah menyelesaikan deteksi batas, pengelompokan, dan prapemrosesan lainnya
Ia memberi contoh pada scatter plot, sumbu dipendekkan agar tidak bertemu di sudut dan hanya menampilkan rentang data; katanya ini win-win karena memakai lebih sedikit tinta sekaligus menampilkan lebih banyak informasi. Namun jika dibandingkan, jelas versi yang dimodifikasi justru lebih kompleks secara visual. Pada halaman yang rumit berisi teks dan beberapa grafik, potongan-potongan itu akan bercampur secara visual dan membuatnya lebih buruk
Salah satu cara mengurangi kompleksitas seperti itu adalah membingkai area besar seperti keseluruhan plot dengan kotak, tetapi kotak adalah musuh mutlak Tufte dalam buku itu dan di tempat lain. Mengejutkan bahwa ia tetap mempertahankan sikap seperti itu meski sudah begitu lama mengamati representasi visual
Tukey adalah salah satu mentor Tufte
Untuk gambaran tingkat tinggi tentang memilih chart yang sesuai dengan data dan cerita dari data tersebut, http://data-to-viz.com sangat bagus, dan contoh-contoh dari berbagai library plotting juga baik sebagai referensi inspirasi. Misalnya https://matplotlib.org/stable/gallery/index.html
Sangat menarik dan relevan, tetapi bukan kesimpulan final untuk topik ini
Namun banyak orang melewatkan logika di baliknya dan sekadar menyalin gaya Tufte apa adanya, sehingga hasilnya kadang tampak terlalu bergaya dan ikonoklastik. Plot default ggplot2 di R adalah contoh yang bagus
Ini tulisan yang merangkum dengan baik kesalahan umum dalam visualisasi data, jadi saya akan membagikannya kepada rekan-rekan. Sebagai materi tambahan, saya sangat merekomendasikan 39 studies about human perception in 30 mins dari Kennedy Eliot: https://medium.com/@kennelliott/39-studies-about-human-perce...
Ini memberi tinjauan cepat atas dasar riset dari banyak klaim seputar praktik terbaik visualisasi data. Terutama menarik soal dogma untuk tidak memakai pie chart; topik ini terus membuat para desainer tidak nyaman sejak 1930-an, tetapi hasil penelitiannya, paling banter, tidak memberikan kesimpulan yang jelas
Sekilas melihat artikel Medium itu, sepertinya ia punya sudut pandang yang sama tentang masalah-masalah ini, jadi tampaknya keduanya bisa saling melengkapi
Pada “3. Kalau teman, jangan biarkan mereka memakai skala warna dua arah untuk data satu arah”, saya bahkan tidak paham kenapa contoh-contoh itu memakai warna sejak awal
Dalam banyak kasus, representasi satu variabel bisa diperbaiki dengan memakai skala warna dibanding hanya memakai tingkat abu-abu. Dalam kasus seperti itu, memakai skala dua arah untuk data satu arah itu buruk, begitu juga sebaliknya
Artinya, ini bukan contoh yang menunjukkan kapan skala warna sebaiknya digunakan
Banyak pelajaran seperti ini bukan hal baru. Lihat buku tahun 1939 karya Willard C. Brinton, Graphic presentation, yang dapat diakses gratis: https://archive.org/details/graphicpresentat00brinrich/mode/...
Di mata saya, semuanya ini masih buruk. Terlalu banyak hiasan chart, dan kebanyakan juga terlalu banyak warna
Semua garis itu tidak diperlukan. Jika dikurangi dengan hati-hati, hasilnya akan lebih mudah dibaca. Buku mana pun karya Edward Tufte membahas hal seperti ini, dan hanya dengan beberapa teknik dasar saja kita sudah bisa cukup jauh
Koreksi: saya kira Tufte yang membuatnya, ternyata salah. https://www.amazon.com/Grammar-Graphics-Statistics-Computing...
Saya tidak pernah menyukai violin plot, tetapi saya sama sekali bukan orang bidang visualisasi data. Baru seminggu lalu saya kebetulan menonton video berjudul violin plots should not exist dan potongan puzzle-nya langsung cocok: https://youtu.be/_0QMKFzW9fw?feature=shared
Berdasarkan penelitian Bill Cleveland, ia membuat presentasi berjudul How Humans See Data yang merangkai beberapa ide seperti ini ke dalam satu kerangka yang konsisten
https://www.youtube.com/watch?v=fSgEeI2Xpdc
Bagian tiga tahap estimasi benar-benar membuka wawasan. Kalau dilihat belakangan memang terasa jelas, tetapi saya tidak menghubungkannya sampai dijelaskan langsung