Aestetik dan Pemetaan

Warna, ukuran, dan bentuk sebagai kanal untuk membawa data ke grafik.

Daftar isi

Topik ini membahas aestetik (aesthetic) sebagai kanal yang membawa kolom data ke properti visual grafik. Pembahasan mencakup pemetaan (mapping) warna untuk membedakan kelompok, kanal-kanal lain seperti ukuran, bentuk, dan transparansi, perbedaan pemetaan di dalam aes() dengan pengaturan nilai tetap di luarnya, serta legenda yang muncul otomatis dari pemetaan. Setelah topik ini dipelajari, kolom data yang tepat dapat dipetakan ke kanal yang tepat tanpa mengatur titik demi titik secara manual.

Pemetaan warna per kelompok#

Kanal color adalah kanal yang paling sering dipakai untuk membedakan kelompok. Kolom kategori dipetakan ke color di dalam aes(), dan ggplot2 mewarnai setiap titik sesuai nilainya. Data iris dipakai lagi, kali ini dengan kolom Species yang memuat tiga spesies.

r Memuat tidyverse
library(tidyverse)
text Keluaran
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.2.1     ✔ readr     2.2.0
✔ forcats   1.0.1     ✔ stringr   1.6.0
✔ ggplot2   4.0.3     ✔ tibble    3.3.1
✔ lubridate 1.9.5     ✔ tidyr     1.3.2
✔ purrr     1.2.2
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
r Ringkasan spesies pada data iris
spesies <- as_tibble(iris) |>
  select(Petal.Length, Petal.Width, Species)
spesies |> count(Species)
text Keluaran
# A tibble: 3 × 2
  Species        n
  <fct>      <int>
1 setosa        50
2 versicolor    50
3 virginica     50

Tiga spesies dengan masing-masing 50 pengukuran siap dipetakan. Pemetaan color = Species ditulis di dalam aes(), dan warna pemisahnya dipilih oleh skala (scale) bawaan.

r Pemetaan spesies ke kanal warna
p <- ggplot(iris, aes(x = Petal.Length, y = Petal.Width, color = Species)) +
  geom_point(size = 2)
ggsave("spesies-warna.svg", p, width = 5, height = 3.2)
0.00.51.01.52.02.5246Petal.LengthPetal.WidthSpeciessetosaversicolorvirginica
Pemetaan spesies ke kanal warna pada grafik sebar kelopak

Legenda muncul otomatis bersama pemetaan, tanpa argumen tambahan apa pun. Warna bawaan untuk kategori diambil dari rona (hue) yang berbeda-beda pada skala bawaan ggplot2, dan pemisahan ketiga spesies terlihat jelas karena panjang serta lebar kelopak memang berbeda antar spesies. Apabila kelompok lebih baik dipisah ke panel tersendiri alih-alih dibedakan warnanya, pemecahan panel dengan facet menyediakan jalan lain yang dibahas pada bagian tersendiri di modul ini.

Perlu dicatat bahwa color mewarnai garis dan tepi bentuk, sedangkan fill mewarnai isian. Titik dan garis membaca kanal color, sedangkan batang, kotak, dan area membaca kanal fill. Dua kanal ini sering tertukar saat pertama kali memakai ggplot2.

Kanal aestetik dan pilihan variabelnya#

Selain color, tersedia beberapa kanal lain yang bekerja dengan pola sama, yaitu dipetakan di dalam aes() dan diterjemahkan oleh skala menjadi properti visual. Tabel berikut merangkum kanal yang paling umum beserta penggunaannya yang wajar.

KanalBerlaku utamanya padaPemetaan yang wajar
colortitik, garis, tekskategori atau nilai numerik
fillbatang, kotak, areakategori atau nilai numerik
sizetitik, garis, teksnilai numerik sebagai besar kecil
shapetitikkategori dengan tingkat sedikit
alphasemua bentuknilai numerik sebagai kepekatan

Skala diskrit dan skala kontinu menerjemahkan pemetaan dengan cara berbeda. Variabel kategori seperti Species dipecah ke warna yang berbeda, sedangkan variabel numerik dipecah ke gradasi. Kanal shape hanya menerima kategori karena bentuk titik tidak memiliki urutan, dan ggplot2 menolak pemetaan nilai numerik ke shape dengan pesan error.

Satu kolom cukup dipetakan ke satu kanal, dan beberapa kanal boleh dipakai bersama untuk kolom yang berbeda. Apabila dua kanal membawa kolom yang sama, misalnya color dan shape keduanya membaca Species, grafiknya lebih mudah dibaca oleh pembaca layar (screen reader) dan tetap terbaca saat dicetak hitam putih.

Pengaturan tetap untuk kontras#

Pengaturan nilai tetap berguna ketika tidak ada kolom yang ingin dibawa ke grafik. Warna tunggal yang tenang membuat titik data menonjol di atas latar putih, dan transparansi mengungkap tumpukan titik pada area yang padat. Kedua pengaturan itu ditulis langsung pada geom, di luar aes().

r Pengaturan warna dan transparansi tetap
p_tetap <- ggplot(iris, aes(x = Petal.Length, y = Petal.Width)) +
  geom_point(color = "#3a6b7e", size = 2, alpha = 0.75)
ggsave("spesies-tetap.svg", p_tetap, width = 5, height = 3.2)
0.00.51.01.52.02.5246Petal.LengthPetal.Width
Pengaturan warna dan transparansi tetap pada seluruh titik

Grafik ini tidak memuat legenda karena tidak ada kolom yang dipetakan. Nilai alpha = 0.75 membuat titik yang tumpang-tindih terlihat lebih pekat, sehingga kepadanannya masih terbaca meskipun warnanya seragam. Kembali ke aturan dasarnya, nilai yang mengikuti data ditaruh di dalam aes(), sedangkan nilai yang ditetapkan sendiri ditaruh di luarnya.

Kesalahan umum#

Kesalahan pertama adalah menaruh nilai tetap di dalam aes(). Pemetaan aes(color = "biru") dibaca sebagai rujukan ke kolom bernama biru, dan karena kolom itu tidak ada, grafik gagal digambar dengan pesan error tentang objek yang tidak ditemukan. Nilai tetap ditaruh pada geom, yaitu geom_point(color = "biru"), agar diperlakukan sebagai warna sungguhan.

Kesalahan kedua adalah memetakan variabel numerik ke kanal yang tidak menerima numerik. Pemetaan aes(shape = Petal.Length) langsung ditolak ggplot2 karena bentuk titik tidak bermakna untuk nilai kontinu. Kanal seperti size atau alpha yang memang dirancang untuk nilai numerik digunakan sebagai gantinya.

Kesalahan ketiga adalah memetakan kategori dengan terlalu banyak tingkat ke kanal warna. Legenda dengan dua puluh warna berdekatan sulit dibedakan dan membuat grafiknya ramai. Apabila kelompoknya banyak, pemisahan dilakukan melalui facet atau dengan mengurutkannya ke dalam grafik terpisah.

Ringkasan#

  • Kanal aestetik seperti color, fill, size, shape, dan alpha membawa kolom data ke properti visual melalui pemetaan di dalam aes().
  • Legenda muncul otomatis dari pemetaan, dan skala bawaan menerjemahkan kategori ke warna berbeda serta nilai numerik ke gradasi.
  • color mewarnai titik dan garis, sedangkan fill mewarnai isian batang, kotak, dan area.
  • Nilai tetap yang berlaku seragam ditulis langsung pada geom, dan transparansi melalui alpha membantu membaca titik yang bertumpuk.

Referensi#