1 Visualisasi 1: Keterisian Tempat Tidur RS di DKI Jakarta (Slide 6)

1.1 Visualisasi awal

Slide 6: diagram lingkaran 3D keterisian tempat tidur RS DKI Jakarta (29 Januari–1 Februari).
Slide 6: diagram lingkaran 3D keterisian tempat tidur RS DKI Jakarta (29 Januari–1 Februari).

1.2 Alasan perbaikan

  1. Jenis diagram tidak sesuai dengan data. Diagram lingkaran dipakai untuk menunjukkan bagian dari satu keseluruhan yang jumlahnya 100%. Di sini keempat angka adalah persentase keterisian pada hari yang berbeda. Jumlahnya 228%, sehingga “irisan” tidak punya arti.
  2. Pesan utama adalah perubahan menurut waktu, yaitu tren. Diagram lingkaran tidak menunjukkan urutan waktu dengan jelas.
  3. Efek 3D membuat irisan depan tampak lebih besar daroipada irisan belakang, sehingga ukuran irisan menyesatkan. Hal ini terlihat pada dua irisan yang bernilai sama (57%) tetapi tampak berbeda karena posisi dan efek 3D
  4. Warna (hijau, biru, kuning, merah) tidak mewakili variabel apa pun.

1.3 Perbaikan yang dilakukan

  • Diubah menjadi diagram garis dengan titik karena data berupa deret waktu pendek. Sumbu mendatar adalah tanggal (urutan alami), sumbu tegak adalah persentase keterisian.
  • Nilai ditulis langsung di dekat titik, sehingga pembaca tidak perlu menebak.
  • Memakai satu warna saja karena hanya ada satu variabel.
  • Efek 3D dihapus.
  • Sumbu tegak dibuat 40–70%. Pada diagram garis, sumbu tidak wajib dimulai dari nol (berbeda dengan diagram batang), tetapi pemotongan sumbu ini dicantumkan pada keterangan agar tidak menyesatkan.
bed <- data.frame(
  tanggal = factor(c("29 Jan", "30 Jan", "31 Jan", "1 Feb"),
                   levels = c("29 Jan", "30 Jan", "31 Jan", "1 Feb")),
  persen  = c(54, 57, 57, 60)
)
bed$x <- seq_len(nrow(bed))

ggplot(bed, aes(x = x, y = persen)) +
  geom_line(colour = "navy", linewidth = 1.2) +
  geom_point(colour = "navy", size = 4) +
  geom_text(aes(label = paste0(persen, "%")), vjust = -1.2,
            fontface = "bold", colour = col_teks, size = 4.5) +
  scale_x_continuous(breaks = bed$x, labels = levels(bed$tanggal),
                     expand = expansion(mult = c(0.08, 0.08))) +
  scale_y_continuous(limits = c(40, 70), breaks = seq(40, 70, 5),
                     labels = function(x) paste0(x, "%")) +
  labs(title = "Tingkat keterisian tempat tidur RS di DKI Jakarta 29 Januari - 1 Februari",
       x = "Tanggal", y = "Tingkat keterisian tempat tidur",
       caption = "Sumber data: Dinas Kesehatan DKI Jakarta.\nCatatan: sumbu tegak dipotong pada 40% agar perubahan harian terlihat.")

1.4 Interpretasi

Tingkat keterisian tempat tidur rumah sakit di DKI Jakarta meningkat dari 54% pada 29 Januari menjadi 60% pada 1 Februari, atau naik 6 poin persentase dalam tiga hari pengamatan. Kenaikan terjadi pada 30 Januari, lalu bertahan di 57% pada 31 Januari, dan naik lagi pada 1 Februari. Artinya beban rumah sakit bertambah, tetapi pada periode ini keterisian masih di bawah 100%. Dengan hanya empat titik, data ini cukup untuk menggambarkan arah perubahan, tetapi belum cukup untuk meramalkan tren jangka panjang.


2 Visualisasi 2 : Sistem Pembayaran (Slide 7)

2.1 Visualisasi awal

Slide 7: diagram lingkaran sistem pembayaran.
Slide 7: diagram lingkaran sistem pembayaran.

2.2 Alasan perbaikan

  1. Warna yang dipakai sangat mirip (gradasi orange), sehingga pencocokan sulit dan sebagian label legenda hampir tidak terbaca di latar kuning.
  2. Kategori bersifat nominal, padahal gradasi warna lebih cocok untuk data ordinal/numerik. Gradasi pada data nominal dapat menimbulkan kesan ada urutan.
  3. Irisan kecil sulit dibandingkan. Perbedaan antara 14% dan 20%, serta irisan 2% yang sangat tipis, sulit ditaksir lewat sudut dan luas.
  4. Tidak ada urutan. Irisan tidak disusun dari terbesar ke terkecil.

2.3 Perbaikan yang dilakukan

  • Diubah menjadi diagram batang horizontal. Perbandingan dilakukan lewat panjang batang pada sumbu yang sama, yang lebih akurat dibaca daripada sudut.
  • Kategori diurutkan dari terbesar ke terkecil; kategori Lainnya diletakkan paling bawah sesuai kebiasaan penyajian.
  • Label kategori berada langsung di samping batang dan nilai persentase di ujung batang, sehingga legenda tidak diperlukan.
  • Hanya batang M-Banking yang diberi warna sorot, karena itulah pesan utama slide. Kategori lain berwarna abu-abu.
  • Sumbu dimulai dari nol (wajib untuk diagram batang) dan berakhir di 100% agar skala sesuai dengan makna persentase.
bayar <- data.frame(
  metode = c("M-Banking", "COD", "Paylater / Cicilan", "Lainnya"),
  persen = c(64, 20, 2, 14)
)
# urutan tampilan: terbesar di atas, "Lainnya" di paling bawah
bayar$metode <- factor(bayar$metode, levels = rev(bayar$metode))
bayar$sorot  <- bayar$metode == "M-Banking"

ggplot(bayar, aes(x = persen, y = metode, fill = sorot)) +
  geom_col(width = 0.65) +
  geom_text(aes(label = paste0(persen, "%")), hjust = -0.2,
            fontface = "bold", colour = col_teks, size = 4.5) +
  scale_fill_manual(values = c(`TRUE` = col_sorot, `FALSE` = col_netral),
                    guide = "none") +
  scale_x_continuous(limits = c(0, 100), breaks = seq(0, 100, 20),
                     labels = function(x) paste0(x, "%"),
                     expand = expansion(mult = c(0, 0.02))) +
  labs(title = "Persentase Pemilihan Metode Pembayaran",
       x = "Persentase", y = "Metode Pembayaran") +
  theme(panel.grid.major.y = element_blank(),
        axis.text.y = element_text(size = 12, colour = col_teks))

2.4 Interpretasi

M-Banking adalah metode pembayaran yang paling dominan (64%), hampir tiga kali lipat COD yang berada di urutan kedua (20%). Kategori Lainnya menyumbang 14%, sedangkan Paylater/Cicilan hanya 2%. Dua metode teratas (M-Banking dan COD) bersama-sama mencakup 84% dari seluruh pembayaran. Hal ini sejalan dengan narasi pada slide bahwa M-Banking disukai karena mudah dan tanpa kontak, sehingga cocok pada masa pandemi.


3 Visualisasi 3 : Penggunaan Komputer di 34 Provinsi (Slide 8-9)

3.1 Visualisasi awal

Slide 8: dua diagram batang persentase masyarakat yang menggunakan komputer di berbagai provinsi (BPS, 2019). Kiri: batang tegak dengan urutan data (barat ke timur) dan label miring; kanan: batang mendatar dengan urutan data.
Slide 8: dua diagram batang persentase masyarakat yang menggunakan komputer di berbagai provinsi (BPS, 2019). Kiri: batang tegak dengan urutan data (barat ke timur) dan label miring; kanan: batang mendatar dengan urutan data.

Slide 9 menampilkan versi lain, yaitu dua diagram batang mendatar untuk 34 provinsi: kiri dengan urutan data, kanan terurut dari nilai terbesar. Pada keduanya hanya sebagian label provinsi yang tampil (selang-seling) karena ruang sempit, dan tidak ada judul sumbu.

3.2 Alasan perbaikan

  1. Terlalu banyak batang (34) pada ruang kecil. Label provinsi miring 45° dan sulit dibaca.
  2. Urutan tidak mengikuti nilai (urutan data/geografis), sehingga pembaca tidak dapat langsung melihat peringkat.
  3. Informasi terbagi dua (dua panel pada slide 8 dan dua panel pada slide 9). Pembaca harus melompat antarpanel untuk membandingkan provinsi.
  4. Tidak ada pembanding atau konteks, misalnya rata-rata, sehingga tidak jelas provinsi mana yang di atas atau di bawah umum.
  5. Judul sumbu dan satuan tidak jelas, serta sumber hanya ditulis kecil di bagian bawah.
  6. Batang yang tebal untuk 34 kategori memakai banyak tinta (data-ink) padahal yang penting adalah posisi ujung batang.

3.3 Perbaikan yang dilakukan

  • Memakai Cleveland dot plot (titik pada posisi nilai) yang lebih ringkas daripada batang. Posisi pada skala yang sama adalah cara terakurat untuk membandingkan nilai (Cleveland & McGill, 1984).
  • Nama provinsi di sumbu tegak, sehingga mudah dibaca tanpa miring.
  • Diurutkan dari terbesar ke terkecil dan dikelompokkan menurut wilayah pulau (Sumatera, Jawa, Bali–Nusa Tenggara, Kalimantan, Sulawesi, Maluku–Papua) dalam satu gambar.
  • Warna dipakai untuk membedakan wilayah (data nominal), dengan palet yang dapat dibedakan.
  • Ditambahkan garis putus-putus rata-rata sederhana antarprovinsi sebagai pembanding, dan angka ditampilkan di samping titik.
komp <- data.frame(
  provinsi = c("ACEH","SUMATERA UTARA","SUMATERA BARAT","RIAU","JAMBI","SUMATERA SELATAN",
               "BENGKULU","LAMPUNG","KEP. BANGKA BELITUNG","KEP. RIAU","DKI JAKARTA",
               "JAWA BARAT","JAWA TENGAH","DI YOGYAKARTA","JAWA TIMUR","BANTEN","BALI",
               "NUSA TENGGARA BARAT","NUSA TENGGARA TIMUR","KALIMANTAN BARAT",
               "KALIMANTAN TENGAH","KALIMANTAN SELATAN","KALIMANTAN TIMUR","KALIMANTAN UTARA",
               "SULAWESI UTARA","SULAWESI TENGAH","SULAWESI SELATAN","SULAWESI TENGGARA",
               "GORONTALO","SULAWESI BARAT","MALUKU","MALUKU UTARA","PAPUA BARAT","PAPUA"),
  persen = c(11.64,14.17,17,14.5,12.2,11.1,14.89,9.94,12.01,20.72,23.51,14.52,13.17,23.35,
             14.22,15.27,18.62,12.03,11.39,10.45,13.58,17.35,19.42,18.02,14.27,13.61,15.41,
             15.8,16.46,12.3,13.78,11.26,14.04,8.2)
)

# Nama provinsi dibuat huruf judul agar lebih mudah dibaca
judul <- function(x) {
  x <- tolower(x)
  x <- gsub("(^|[ .])([a-z])", "\\1\\U\\2", x, perl = TRUE)
  x <- gsub("^Di ", "DI ", x); x <- gsub("^Dki ", "DKI ", x)
  x <- gsub("Kep\\. ", "Kep. ", x)
  x
}
komp$provinsi <- judul(komp$provinsi)

# Pengelompokan wilayah pulau
komp$wilayah <- with(komp, ifelse(
  grepl("^Aceh|Sumatera (Utara|Barat|Selatan)|^Riau|^Jambi|Bengkulu|Lampung|Bangka|Kep. Riau", provinsi), "Sumatera",
  ifelse(grepl("^DKI|Jawa|^DI Yogya|Banten", provinsi), "Jawa",
  ifelse(grepl("^Bali|Nusa Tenggara", provinsi), "Bali–Nusa Tenggara",
  ifelse(grepl("Kalimantan", provinsi), "Kalimantan",
  ifelse(grepl("Sulawesi|Gorontalo", provinsi), "Sulawesi", "Maluku–Papua"))))))
komp$wilayah <- factor(komp$wilayah,
  levels = c("Jawa","Sumatera","Kalimantan","Bali–Nusa Tenggara","Sulawesi","Maluku–Papua"))

stopifnot(nrow(komp) == 34, !anyNA(komp$wilayah))
rata2 <- mean(komp$persen)
komp$provinsi <- factor(komp$provinsi, levels = komp$provinsi[order(komp$persen)])
pal <- c("Jawa" = "#1F5A99", "Sumatera" = "#D55E00", "Kalimantan" = "#009E73",
         "Bali-Nusa Tenggara" = "#CC79A7", "Sulawesi" = "#E69F00", "Maluku-Papua" = "#7A7A7A")

ggplot(komp, aes(x = persen, y = provinsi, colour = wilayah)) +
  geom_segment(aes(x = 0, xend = persen, yend = provinsi),
               colour = "#E3E6EA", linewidth = 0.5) +
  geom_vline(xintercept = rata2, linetype = "dashed", colour = "#555555") +
  geom_point(size = 3) +
  geom_text(aes(x = 26.5, label = sprintf("%.1f", persen)), hjust = 1, size = 3,
            colour = col_teks, show.legend = FALSE) +
  annotate("text", x = rata2 + 0.3, y = 8, hjust = 0, size = 3.4, colour = "#555555",
           label = sprintf("Rata-rata 34 provinsi = %.1f%%", rata2)) +
  scale_colour_manual(values = pal, name = "Wilayah") +
  scale_x_continuous(limits = c(0, 26.8), breaks = seq(0, 25, 5),
                     labels = function(x) paste0(x, "%"),
                     expand = expansion(mult = c(0, 0))) +
  labs(title = "Persentase penduduk yang menggunakan komputer menurut Provinsi 2019",
       x = "Persentase penduduk pengguna komputer", y = "Provinsi",
       caption = "Sumber data: BPS, 2019. \nGaris putus-putus: rata-rata sederhana 34 provinsi (bukan angka nasional resmi).\nAngka di kolom kanan adalah nilai tiap provinsi.") +
  theme(panel.grid.major.y = element_blank(),
        axis.text.y = element_text(size = 9),
        legend.position = "top")

Ringkasan angka pendukung:

urut <- komp[order(-komp$persen), c("provinsi", "wilayah", "persen")]
tab_top <- head(urut, 5); tab_bot <- tail(urut, 5)
kable(rbind(tab_top, tab_bot), row.names = FALSE, digits = 2,
      col.names = c("Provinsi", "Wilayah", "Pengguna komputer (%)"),
      caption = "Lima provinsi tertinggi (baris 1–5) dan lima provinsi terendah (baris 6–10)")
Lima provinsi tertinggi (baris 1–5) dan lima provinsi terendah (baris 6–10)
Provinsi Wilayah Pengguna komputer (%)
DKI Jakarta Jawa 23.51
DI Yogyakarta Jawa 23.35
Kep. Riau Sumatera 20.72
Kalimantan Timur Kalimantan 19.42
Bali Bali–Nusa Tenggara 18.62
Maluku Utara Maluku–Papua 11.26
Sumatera Selatan Sumatera 11.10
Kalimantan Barat Kalimantan 10.45
Lampung Sumatera 9.94
Papua Maluku–Papua 8.20
ringkas <- aggregate(persen ~ wilayah, komp,
                     function(v) c(n = length(v), median = median(v), min = min(v), maks = max(v)))
ringkas <- do.call(data.frame, ringkas)
names(ringkas) <- c("Wilayah", "Jumlah provinsi", "Median (%)", "Minimum (%)", "Maksimum (%)")
kable(ringkas[order(-ringkas$`Median (%)`), ], row.names = FALSE, digits = 2,
      caption = "Ringkasan menurut wilayah pulau")
Ringkasan menurut wilayah pulau
Wilayah Jumlah provinsi Median (%) Minimum (%) Maksimum (%)
Kalimantan 5 17.35 10.45 19.42
Jawa 6 14.89 13.17 23.51
Sulawesi 6 14.84 12.30 16.46
Sumatera 10 13.18 9.94 20.72
Maluku–Papua 4 12.52 8.20 14.04
Bali–Nusa Tenggara 3 12.03 11.39 18.62

3.4 Interpretasi

Persentase penduduk yang menggunakan komputer sangat beragam antarprovinsi, dari 8,2% (Papua) sampai 23,5% (DKI Jakarta), dengan rata-rata sederhana sekitar 14.7%. DKI Jakarta (23,5%) dan DI Yogyakarta (23,4%) berada jauh di atas provinsi lain, disusul Kepulauan Riau (20,7%) dan Kalimantan Timur (19,4%). Sebaliknya, Papua, Lampung, dan Kalimantan Barat termasuk yang terendah (kurang dari 11%). Pengelompokan menurut wilayah memperlihatkan bahwa provinsi-provinsi di Jawa berada di dua kutub (DKI Jakarta dan DI Yogyakarta sangat tinggi, tetapi Jawa Tengah dan Jawa Timur mendekati rata-rata), sedangkan provinsi di Maluku–Papua dan Nusa Tenggara cenderung berada di bawah rata-rata. Secara umum, penggunaan komputer terkonsentrasi di provinsi dengan wilayah perkotaan yang besar dan pusat pendidikan. Penjelasan sebab-akibat tidak dapat disimpulkan dari data ini; temuan hanya bersifat deskriptif.


4 Daftar Pustaka

  • Cleveland, W. S., & McGill, R. (1984). Graphical perception: Theory, experimentation, and application to the development of graphical methods. Journal of the American Statistical Association, 79(387), 531–554.
  • Materi kuliah: Kuliah 9. Unsur dan Jenis Visualisasi (Statistika dan Sains Data, IPB University). Data pada Visualisasi 3 bersumber dari BPS (bps.go.id), situasi 2019, sebagaimana tertera pada slide.