Heatmap: Visualisasi buat Lihat Pola dalam Sekejap
TL;DR
Heatmap adalah chart yang nampilin nilai data sebagai warna dalam grid dua dimensi, di mana warna makin pekat berarti nilainya makin besar. Dipakai buat nemuin pola dan konsentrasi di data yang punya dua dimensi kategori, misalnya jam versus hari. Kekuatannya bukan baca angka persis, tapi ngeliat di mana angka menumpuk.
Heatmap adalah chart yang nampilin nilai data sebagai warna dalam grid, jadi kamu bisa lihat di mana angka menumpuk tanpa baca satu-satu.
Bayangan konkretnya gini. Kamu punya tabel transaksi 7 hari x 14 jam operasional. Itu 98 angka. Dibaca satu-satu butuh 2 menitan, dan otak kamu bakal lupa angka pertama pas nyampe angka ke-50.
Ubah jadi heatmap, dan blok gelap di kanan bawah langsung bilang: Sabtu malam itu jam paling ramai. Tiga detik, selesai.
Di bawah ini aku bahas cara heatmap kerja, kapan dia cocok, warna apa yang aman, plus satu contoh dari dataset toko_berkah yang biasa kita pakai di latihan dashboard.
Apa itu heatmap?
Heatmap adalah visualisasi berbentuk grid di mana tiap sel diwarnain berdasarkan nilai angkanya. Warna makin pekat artinya nilai makin besar. Sumbu horizontal dan vertikalnya diisi dua kategori berbeda, dan persilangan keduanya yang bawa angka.
Jadi ada tiga variabel di satu gambar: kategori baris, kategori kolom, dan angka yang diwakili warna.
Yang perlu kamu terima sejak awal: heatmap payah buat baca angka persis. Mata manusia gak bisa bedain warna teal 60% sama teal 65%. Kalau kamu butuh angka akurat, taruh label di dalam selnya atau pakai tabel biasa.
Kekuatan heatmap ada di pola. Blok gelap, garis terang, sudut yang menonjol — itu yang dia jual.
Kapan heatmap lebih baik dari bar chart?
Pakai heatmap kalau datamu punya dua dimensi kategori sekaligus. Hari x jam. Produk x kota. Kanal x bulan.
Bar chart cuma nampung satu dimensi dengan enak. Maksa dua dimensi ke bar chart bikin kamu butuh 7 bar chart bersebelahan, dan pembaca harus loncat-loncat matanya buat bandingin.
| Situasi | Pakai ini | Alasannya |
|---|---|---|
| Omzet per kota (1 dimensi) | Bar chart | Panjang bar gampang dibandingin persis |
| Omzet per kota per bulan | Heatmap | Dua kategori, cari pola musiman per kota |
| Korelasi antar 10 kolom numerik | Correlation heatmap | 100 pasangan angka, mustahil dibaca sebagai tabel |
| Tren penjualan harian setahun | Line chart | Urutan waktu kontinu, bukan grid kategori |
Satu lagi yang sering kepakai: correlation matrix. Kamu punya 10 kolom numerik, hasilnya 45 pasangan korelasi. Sebagai tabel angka itu mimpi buruk. Sebagai heatmap, kamu langsung lihat kotak gelap yang artinya dua kolom itu jalan bareng.
Gimana cara baca heatmap yang bener?
Urutannya tiga langkah.
- Cek legend dulu. Warna gelap itu nilai tinggi atau rendah? Jangan asal nebak. Ada tool yang defaultnya kebalik.
- Cari blok, bukan sel. Sel tunggal yang gelap bisa aja kebetulan. Blok gelap yang nyambung — itu pola beneran.
- Cari yang kosong juga. Area terang yang lebar sering lebih berguna dari area gelap. Jam kosong = jam yang bisa kamu potong shift-nya.
Kesalahan paling umum: langsung nyari sel paling gelap terus berhenti di situ. Sel paling gelap itu cuma satu titik. Cerita bisnisnya ada di bentuk sebarannya.
Warna apa yang harus dipakai?
Ini bagian yang paling sering dirusak orang.
Ada dua tipe skala warna yang aman:
- Sequential — satu warna, terang ke gelap. Pakai ini kalau angkamu cuma naik dari 0 ke atas. Contoh: jumlah transaksi, omzet, jumlah user.
- Diverging — dua warna berlawanan dengan netral di tengah. Pakai ini kalau ada titik nol yang bermakna. Contoh: selisih dari target, pertumbuhan positif vs negatif, korelasi -1 sampai +1.
Yang harus kamu hindari: skala pelangi (merah-kuning-hijau-biru-ungu). Kelihatannya rame dan menarik, tapi mata manusia gak punya urutan alami buat warna-warna itu. Orang bakal salah nebak mana yang lebih besar.
Tim Matplotlib udah nulis panjang soal ini, dan mereka bahkan ganti default colormap dari jet ke viridis gara-gara masalah persepsi ini. Detailnya ada di dokumentasi colormap Matplotlib.
Sekitar 8% pria punya buta warna merah-hijau. Skala merah-ke-hijau otomatis gak kebaca buat mereka. Teal-ke-oranye jauh lebih aman.
Contoh kasus: jam sibuk toko_berkah
Dataset toko_berkah punya 8.400 transaksi selama 12 minggu di satu toko kelontong Bandung. Kolomnya: tanggal, jam, total_belanja, kasir.
Buat bikin heatmap hari x jam, agregasi dulu:
SELECT
EXTRACT(DOW FROM tanggal) AS hari,
EXTRACT(HOUR FROM jam) AS jam_ke,
COUNT(*) AS jumlah_transaksi,
SUM(total_belanja) AS omzet
FROM toko_berkah
GROUP BY 1, 2
ORDER BY 1, 2;
Hasilnya 98 baris — 7 hari x 14 jam buka (jam 07.00 sampai 21.00). Lempar ke heatmap, dan tiga hal langsung nongol.
Satu. Ada dua blok gelap, bukan satu. Puncak pagi jam 07.00–09.00 (rata-rata 24 transaksi/jam) dan puncak sore jam 17.00–19.00 (rata-rata 31 transaksi/jam). Siang jam 11.00–14.00 anjlok ke 9 transaksi/jam.
Dua. Puncak pagi cuma kuat di hari kerja. Sabtu–Minggu pagi rata-rata 11 transaksi/jam, kurang dari separuh hari kerja. Masuk akal: pembeli pagi itu orang yang mampir sebelum berangkat kerja.
Tiga — ini yang paling menarik. Omzet dan jumlah transaksi punya pola yang beda. Jumlah transaksi tertinggi ada di Jumat sore. Tapi omzet per jam tertinggi ada di Minggu jam 16.00–18.00, dengan rata-rata belanja Rp 84.000 per struk versus Rp 41.000 di hari kerja.
Artinya: hari kerja itu belanja cepet buat kebutuhan mendadak. Minggu itu belanja mingguan borongan.
Dua heatmap dari data yang sama, dua keputusan berbeda. Heatmap transaksi buat ngatur jumlah kasir. Heatmap omzet buat naruh promo bundling.
Kalau kamu mau latihan agregasi kayak gini, mulai dari GROUP BY dan EXTRACT. Dua fungsi itu yang bikin data mentah siap jadi heatmap.
Kesalahan umum yang bikin heatmap gak kebaca
Outlier yang narik skala. Satu sel bernilai 50 juta di tengah sel-sel yang cuma jutaan bakal bikin semua yang lain kelihatan putih pucat. Cek sebaran dulu. Kalau ada outlier ekstrem, pisahin atau pakai skala persentil.
Terlalu banyak sel. Heatmap 50 x 50 itu 2.500 sel. Gak ada yang bisa baca itu. Batasi ke sekitar 20 kategori per sumbu. Lebihnya, grup dulu jadi kategori yang lebih besar.
Urutan kategori acak. Kalau sumbu kamu berisi kategori nominal (produk, kota), urutin berdasarkan nilai — bukan alfabet. Urutan alfabet nyembunyiin pola. Urutan berdasarkan total bikin pola langsung nongol sebagai gradasi.
Gak ada label angka di sel penting. Kalau audiens kamu bakal nanya "itu berapa persisnya?", kasih label di selnya. Warna buat pola, angka buat presisi. Dua-duanya boleh barengan.
Legend hilang. Heatmap tanpa legend itu gambar abstrak. Selalu kasih skala warnanya, lengkap sama satuan dan rentang nilainya.
FAQ
Heatmap itu buat data apa aja?
Heatmap paling pas buat data yang punya dua dimensi kategori plus satu angka. Contohnya hari x jam dengan angka transaksi, atau produk x kota dengan angka omzet. Kalau datamu cuma satu dimensi, bar chart lebih jelas. Kalau kamu mau lihat hubungan antar banyak kolom numerik sekaligus, correlation heatmap juga masuk akal.
Bedanya heatmap sama treemap apa?
Heatmap pakai grid dengan ukuran sel yang sama, dan cuma warna yang bawa informasi. Treemap pakai kotak dengan ukuran beda-beda, jadi luas kotak yang bawa informasi utamanya. Kalau kamu mau bandingin proporsi dari satu total, pakai treemap. Kalau kamu mau lihat pola di persilangan dua kategori, pakai heatmap.
Warna apa yang aman buat heatmap?
Buat data yang cuma naik dari kecil ke besar, pakai satu warna dengan gradasi terang ke gelap, misalnya putih ke teal. Buat data yang punya titik tengah, kayak selisih target, pakai dua warna berlawanan dengan netral di tengah. Hindari skala pelangi. Warna pelangi bikin mata salah baca urutan besarannya, dan susah dibaca teman yang buta warna.
Bisa bikin heatmap di Excel tanpa plugin?
Bisa. Bikin pivot table dulu dengan satu kategori di baris dan satu di kolom. Blok area angkanya, terus pakai Conditional Formatting lalu Color Scales. Excel langsung ngewarnain tiap sel sesuai nilainya. Google Sheets punya fitur yang sama di Format lalu Conditional formatting lalu tab Color scale.
Kenapa heatmap-ku kelihatan rata semua warnanya?
Biasanya gara-gara satu outlier gede yang narik skala warnanya. Kalau ada satu sel bernilai 50 juta sementara sisanya di bawah 2 juta, semua sel lain bakal kelihatan pucat. Solusinya: buang outlier ke chart terpisah, atau ganti skala jadi persentil, atau pakai skala log. Cek dulu sebaran angkanya sebelum nyalahin chart-nya.
Penutup
Tiga hal yang perlu kamu bawa pulang:
- Heatmap buat nemuin pola di dua dimensi kategori, bukan buat baca angka persis.
- Skala warna sequential atau diverging. Pelangi jangan.
- Cek outlier sebelum nyalahin chart-nya kalau warnanya rata semua.
Heatmap toko_berkah tadi cuma butuh satu query GROUP BY. Bagian susahnya bukan bikin chart-nya — tapi nyiapin datanya sampai bentuknya pas.
Latihan agregasi buat visualisasi bisa kamu mulai di glossary aggregate function, terus lanjut baca cara pilih chart yang tepat biar gak salah pilih visual lagi.
Mau praktek langsung? Mulai latihan SQL gratis
Latihan interaktif, langsung di browser.
Artikel Terkait
Cara Membuat Dashboard di Google Sheets Tanpa Tools Tambahan
Dashboard penjualan yang rapi bisa kamu bikin cuma pakai Google Sheets — tanpa Looker Studio, tanpa add-on, tanpa bayar apa pun. Ini urutan 6 langkahnya, lengkap dengan rumusnya.
Dashboard vs Laporan: Bedanya dan Kapan Bikin yang Mana
Dashboard buat mantau angka yang berubah tiap hari. Laporan buat jawab satu pertanyaan sekali dan tuntas. Salah pilih, kerjaanmu kebuang.
KPI Keuangan: Metrik yang Dibaca CFO Setiap Bulan
Delapan KPI keuangan yang beneran dibuka CFO tiap bulan, rumusnya, dan cara nyusunnya jadi satu dashboard yang kebaca dalam 90 detik.