Visualisasi data merupakan salah satu cara untuk menyajikan informasi kuantitatif agar lebih mudah dipahami. Namun, efektivitas visualisasi tidak hanya ditentukan oleh jenis grafik yang digunakan, tetapi juga oleh keterbacaan label, pemilihan warna, pengurutan kategori, kejelasan skala, dan kesesuaian bentuk grafik dengan tujuan analisis.
Perbaikan dilakukan dengan menggunakan bahasa pemrograman R dan paket
ggplot2. Untuk setiap visualisasi, disajikan identifikasi
masalah, data simulasi yang menyerupai karakter umum grafik pada materi,
kode untuk menghasilkan visualisasi awal dan hasil perbaikan, serta
penjelasan mengenai perubahan dan informasi utama yang ditampilkan.
Data yang digunakan dalam laporan ini merupakan data simulasi, bukan data asli yang diambil dari sumber pada slide. Oleh karena itu, interpretasi hasil dibatasi pada pola yang ditunjukkan oleh data simulasi dan tidak digunakan untuk menyimpulkan kondisi faktual.
Pada slide 6, diagram lingkaran digunakan untuk menampilkan beberapa persentase kategori. Diagram lingkaran tepat digunakan apabila kategori merupakan bagian-bagian dari satu keseluruhan. Namun, jika setiap persentase merupakan nilai independen, penggunaan diagram lingkaran dapat menyesatkan karena menyiratkan bahwa semua kategori membentuk satu total.
Oleh karena itu, visualisasi alternatif yang digunakan adalah diagram batang horizontal. Bentuk ini memungkinkan perbandingan nilai antarkategori secara langsung melalui panjang batang dan label angka.
data_bed <- tibble(
kategori = c(
"Kategori A", "Kategori B", "Kategori C",
"Kategori D", "Kategori E"
),
persen = c(60, 57, 54, 18, 11)
)
data_bed
## # A tibble: 5 × 2
## kategori persen
## <chr> <dbl>
## 1 Kategori A 60
## 2 Kategori B 57
## 3 Kategori C 54
## 4 Kategori D 18
## 5 Kategori E 11
ggplot(data_bed, aes(x = "", y = persen, fill = kategori)) +
geom_col(width = 1, color = "white") +
coord_polar(theta = "y") +
labs(
title = "Persentase Menurut Kategori",
subtitle = "Data simulasi",
fill = "Kategori"
) +
theme_void()
### Visualisasi Perbaikan
data_bed %>%
mutate(kategori = fct_reorder(kategori, persen)) %>%
ggplot(aes(x = persen, y = kategori)) +
geom_col(width = 0.7, fill = "steelblue") +
geom_text(
aes(label = paste0(persen, "%")),
hjust = -0.15,
size = 3.5
) +
scale_x_continuous(
limits = c(0, 70),
breaks = seq(0, 70, 10)
) +
labs(
title = "Perbandingan Persentase Menurut Kategori",
x = "Persentase (%)",
y = NULL,
caption = "Data simulasi"
) +
theme_minimal() +
theme(panel.grid.major.y = element_blank())
### Pembahasan
Visualisasi awal menggunakan diagram lingkaran, sedangkan visualisasi hasil perbaikan menggunakan diagram batang horizontal. Diagram batang dipilih karena panjang batang lebih mudah dibandingkan daripada sudut atau luas irisan, terutama ketika nilai antarkategori berdekatan.
Pengurutan kategori dan penambahan label persentase juga membantu pembaca mengenali perbedaan nilai tanpa harus memperkirakannya berdasarkan ukuran visual.
Pada data simulasi, Kategori A memiliki nilai tertinggi sebesar 60%, sedangkan Kategori E memiliki nilai terendah sebesar 11%. Hasil tersebut hanya menggambarkan data simulasi.
Visualisasi pada slide 7 menggunakan diagram lingkaran untuk menunjukkan proporsi metode pembayaran, yaitu COD, M-Banking, Paylater/Cicilan, dan kategori lainnya. Jenis diagram ini tetap dipertahankan karena sesuai untuk menggambarkan komposisi kategori.
Permasalahan yang diperbaiki terletak pada penggunaan warna. Beberapa irisan pada visualisasi awal memiliki warna yang berdekatan sehingga batas antarkategori kurang terlihat jelas. Perbaikan dilakukan dengan menggunakan warna yang lebih kontras, mempertahankan garis putih ant irisan, dan menampilkan label persentase agar informasi lebih mudah dibaca.
library(ggplot2)
library(dplyr)
# Data simulasi yang menyerupai contoh pada slide
data_pembayaran <- data.frame(
metode = c("COD", "M-Banking", "Paylater/Cicilan", "Lainnya"),
proporsi = c(20, 64, 2, 14)
)
# Menghitung posisi tengah setiap irisan
data_pembayaran <- data_pembayaran %>%
mutate(
posisi = cumsum(proporsi) - proporsi / 2,
label = paste0(proporsi, "%")
)
ggplot(
data_pembayaran,
aes(x = 1, y = proporsi, fill = metode)
) +
geom_col(
width = 1,
color = "white",
linewidth = 0.7
) +
coord_polar(theta = "y", start = 0) +
scale_fill_manual(
values = c(
"COD" = "#F8C4AE",
"M-Banking" = "#F5A06B",
"Paylater/Cicilan" = "#F28E45",
"Lainnya" = "#BD6817"
)
) +
geom_text(
aes(
x = 1.18,
y = posisi,
label = label
),
inherit.aes = FALSE,
color = "#5C5145",
size = 4
) +
labs(
title = "Sistem Pembayaran",
fill = NULL
) +
theme_void() +
theme(
plot.background = element_rect(
fill = "white",
color = NA
),
panel.background = element_rect(
fill = "white",
color = NA
),
plot.title = element_text(
face = "bold",
size = 16,
hjust = 0.5,
color = "black"
),
legend.position = "bottom",
legend.text = element_text(
size = 10,
color = "#5C5145"
),
plot.margin = margin(15, 25, 10, 25)
)
### Visualisasi Setelah Perbaikan
ggplot(
data_pembayaran,
aes(x = 1, y = proporsi, fill = metode)
) +
geom_col(
width = 1,
color = "white",
linewidth = 1
) +
coord_polar(theta = "y", start = 0) +
scale_fill_manual(
values = c(
"COD" = "#56B4E9",
"M-Banking" = "#E69F00",
"Paylater/Cicilan" = "#009E73",
"Lainnya" = "#CC79A7"
)
) +
geom_text(
aes(
x = 1.18,
y = posisi,
label = label
),
inherit.aes = FALSE,
color = "#333333",
size = 4
) +
labs(
title = "Sistem Pembayaran",
fill = NULL
) +
theme_void() +
theme(
plot.background = element_rect(
fill = "white",
color = NA
),
panel.background = element_rect(
fill = "white",
color = NA
),
plot.title = element_text(
face = "bold",
size = 16,
hjust = 0.5
),
legend.position = "bottom",
legend.text = element_text(
size = 10,
color = "#333333"
),
plot.margin = margin(15, 25, 10, 25)
)
### Pembahasan
Visualisasi awal menggunakan diagram lingkaran dengan warna peach dan oranye yang relatif berdekatan. Kombinasi tersebut menyebabkan beberapa kategori kurang mudah dibedakan, terutama irisan dengan proporsi kecil.
Pada visualisasi setelah perbaikan, warna diubah menjadi biru, oranye, hijau, dan ungu. Perbedaan rona yang lebih jelas membantu pembaca membedakan irisan dan mencocokkannya dengan legenda. Garis putih ant irisan dipertegas, sedangkan label persentase tetap dipertahankan agar nilai setiap kategori dapat diketahui secara langsung.
Perbaikan ini tidak mengubah jenis diagram, nilai proporsi, maupun informasi yang ditampilkan. Fokusnya adalah meningkatkan keterbacaan melalui pemilihan warna yang lebih efektif.
Pada data simulasi, M-Banking memiliki proporsi terbesar sebesar 64%, diikuti COD sebesar 20%, kategori lainnya sebesar 14%, dan Paylater/Cicilan sebesar 2%. Informasi utama yang ditampilkan adalah dominasi proporsi M-Banking dibandingkan metode pembayaran lainnya.
Angka tersebut mengikuti ilustrasi pada slide untuk kebutuhan demonstrasi dan belum diverifikasi sebagai data aktual. Oleh karena itu, interpretasi ini tidak dapat digunakan untuk menyimpulkan pola penggunaan metode pembayaran yang sebenarnya.
Visualisasi pada slide 10 menampilkan perkembangan jumlah kasus COVID-19 dari waktu ke waktu. Grafik deret waktu (time series) sesuai untuk menunjukkan perubahan kasus harian.
Beberapa hal yang perlu diperhatikan dalam visualisasi seperti ini: 1. Fluktuasi kasus harian dapat membuat grafik terlihat tidak teratur. 2. Tren umum kenaikan atau penurunan kasus mungkin sulit dikenali jika hanya ditampilkan melalui nilai harian. 3. Judul, label sumbu, dan keterangan perlu dibuat jelas agar pembaca dapat memahami periode serta jumlah kasus yang ditampilkan. Perbaikan yang dilakukan: mempertahankan grafik garis untuk data harian, kemudian menambahkan garis tren rata-rata bergerak selama tujuh hari. Rata-rata bergerak membantu mengurangi pengaruh fluktuasi harian sehingga pola umum lebih mudah terlihat.
library(ggplot2)
library(dplyr)
set.seed(123)
tanggal <- seq(
from = as.Date("2021-06-01"),
by = "day",
length.out = 120
)
tren <- seq(300, 2500, length.out = 120)
gelombang <- 500 * sin(seq(0, 3 * pi, length.out = 120))
fluktuasi <- rnorm(120, mean = 0, sd = 250)
data_covid <- data.frame(
tanggal = tanggal,
kasus = pmax(
0,
round(tren + gelombang + fluktuasi)
)
)
data_covid <- data_covid %>%
mutate(
rata_rata_7hari = as.numeric(
stats::filter(
kasus,
rep(1/7, 7),
sides = 1
)
)
)
head(data_covid)
## tanggal kasus rata_rata_7hari
## 1 2021-06-01 160 NA
## 2 2021-06-02 301 NA
## 3 2021-06-03 806 NA
## 4 2021-06-04 491 NA
## 5 2021-06-05 562 NA
## 6 2021-06-06 1014 NA
Data tersebut merupakan data simulasi, bukan catatan kasus COVID-19 yang sebenarnya. Data dibuat untuk meniru pola naik-turun kasus harian agar kita dapat mempelajari perbaikan visualisasi.
ggplot(data_covid, aes(x = tanggal, y = kasus)) +
geom_line(color = "#4B91B5", linewidth = 0.8) +
labs(
title = "Jumlah Kasus COVID-19 Harian",
x = "Tanggal",
y = "Jumlah kasus"
) +
theme_minimal()
### Visualisasi perbaikan
ggplot(data_covid, aes(x = tanggal, y = kasus)) +
geom_line(
aes(y = kasus, color = "Kasus harian"),
linewidth = 0.6,
alpha = 0.55
) +
geom_line(
aes(y = rata_rata_7hari, color = "Rata-rata 7 hari"),
linewidth = 1.1,
na.rm = TRUE
) +
scale_color_manual(
values = c(
"Kasus harian" = "#9ECAE1",
"Rata-rata 7 hari" = "#D55E00"
)
) +
labs(
title = "Perkembangan Kasus COVID-19 Harian",
subtitle = "Garis rata-rata bergerak membantu memperlihatkan tren umum",
x = "Tanggal",
y = "Jumlah kasus",
color = NULL,
caption = "Data simulasi, bukan data kasus COVID-19 aktual"
) +
theme_minimal() +
theme(
plot.title = element_text(face = "bold", size = 14),
legend.position = "bottom",
panel.grid.minor = element_blank()
)
| Aspek | Sebelum | Sesudah |
|---|---|---|
| Penyajian data | Garis kasus harian | Garis harian dan rata-rata bergerak |
| Fluktuasi | Perubahan harian mendominasi tampilan | Fluktuasi tetap terlihat, tetapi tren lebih mudah dikenali |
| Warna | Satu warna garis | Warna berbeda untuk membedakan dua informasi |
| Keterangan | Judul dan sumbu dasar | Ditambah subtitle dan keterangan data simulasi |
Grafik ini membantu pembaca memahami dua hal:
Dengan demikian, pembaca dapat membedakan lonjakan sesaat dari kecenderungan kenaikan atau penurunan yang lebih berkelanjutan. Namun, rata-rata bergerak tidak menghilangkan seluruh ketidakpastian dan tidak menjelaskan penyebab perubahan kasus.
Pada slide 19, ridgeline plot digunakan untuk memperlihatkan distribusi Indeks Pembangunan Manusia (IPM) pada enam wilayah, yaitu Afrika, Asia, Eropa, Amerika Utara, Oseania, dan Amerika Selatan.
Jenis visualisasi ini sesuai karena memungkinkan pembaca membandingkan bentuk distribusi, lokasi nilai yang relatif tinggi atau rendah, serta penyebaran IPM antarkawasan. Namun, berdasarkan gambar slide, terdapat beberapa aspek yang dapat diperbaiki: 1. Judul belum menjelaskan konteks secara lengkap. Judul yang informatif perlu menyebutkan variabel yang dianalisis dan, jika tersedia, periode pengamatan. 2. Label sumbu dan nama wilayah relatif kecil. Hal ini menyulitkan pembaca ketika grafik ditampilkan dalam ukuran presentasi. 3. Warna antarkawasan cukup mencolok. Warna dapat dipertahankan, tetapi perlu dipilih agar setiap distribusi mudah dibedakan tanpa mengganggu keterbacaan. 4. Informasi sumber dan data belum terlihat jelas. Keterangan sumber dan periode sebaiknya dicantumkan apabila tersedia. Perbaikan difokuskan pada keterbacaan, konsistensi warna, dan kelengkapan informasi tanpa mengganti jenis grafik.
library(ggplot2)
library(dplyr)
library(ggridges)
set.seed(123)
n <- 200
data_ipm <- data.frame(
wilayah = rep(
c(
"Africa",
"Asia",
"Europe",
"North America",
"Oceania",
"South America"
),
each = n
),
ipm = c(
rnorm(n, mean = 0.55, sd = 0.12),
rnorm(n, mean = 0.72, sd = 0.12),
rnorm(n, mean = 0.82, sd = 0.07),
rnorm(n, mean = 0.80, sd = 0.08),
rnorm(n, mean = 0.76, sd = 0.09),
rnorm(n, mean = 0.74, sd = 0.09)
)
)
data_ipm <- data_ipm %>%
mutate(ipm = pmin(pmax(ipm, 0.3), 1.0))
data_ipm$wilayah <- factor(
data_ipm$wilayah,
levels = c(
"Africa",
"Asia",
"Europe",
"North America",
"Oceania",
"South America"
)
)
head(data_ipm)
## wilayah ipm
## 1 Africa 0.4827429
## 2 Africa 0.5223787
## 3 Africa 0.7370450
## 4 Africa 0.5584610
## 5 Africa 0.5655145
## 6 Africa 0.7558078
Data simulasi ini membangkitkan 200 observasi untuk setiap wilayah. Rata-rata dan simpangan baku ditetapkan berbeda agar bentuk distribusi antarkawasan dapat dibandingkan.
ggplot(
data_ipm,
aes(
x = ipm,
y = wilayah,
fill = wilayah
)
) +
geom_density_ridges(
alpha = 0.8,
color = "grey40",
scale = 1.1
) +
labs(
title = "IPM Menurut Wilayah",
x = "Indeks Pembangunan Manusia",
y = "Wilayah"
) +
theme_minimal()
library(ggplot2)
library(dplyr)
library(ggridges)
ggplot(
data_ipm,
aes(
x = ipm,
y = wilayah,
fill = wilayah
)
) +
geom_density_ridges(
alpha = 0.85,
color = "white",
linewidth = 0.4,
scale = 1.05,
rel_min_height = 0.01
) +
scale_fill_manual(
values = c(
"Africa" = "#D55E00",
"Asia" = "#E69F00",
"Europe" = "#009E73",
"North America" = "#0072B2",
"Oceania" = "#CC79A7",
"South America" = "#56B4E9"
)
) +
scale_x_continuous(
breaks = seq(0.3, 1.0, by = 0.1),
limits = c(0.3, 1.0),
expand = c(0, 0)
) +
labs(
title = "Distribusi Indeks Pembangunan Manusia Menurut Wilayah",
subtitle = "Perbandingan bentuk dan penyebaran nilai IPM",
x = "Indeks Pembangunan Manusia",
y = NULL,
fill = "Wilayah",
caption = "Data simulasi, bukan data IPM aktual"
) +
theme_minimal(base_size = 12) +
theme(
plot.title = element_text(
face = "bold",
size = 15
),
plot.subtitle = element_text(size = 11),
axis.text = element_text(
size = 10,
color = "grey20"
),
axis.title.x = element_text(
size = 11,
face = "bold"
),
legend.position = "none",
panel.grid.minor = element_blank(),
panel.grid.major.y = element_blank(),
plot.caption = element_text(
size = 9,
color = "grey40"
)
)
### Penjelasan perubahan Aspek Visualisasi awal Visualisasi perbaikan
Judul Umum Menjelaskan distribusi IPM menurut wilayah Ukuran teks
Mengikuti pengaturan bawaan Diperbesar agar lebih terbaca Warna
Mengikuti pengaturan bawaan Palet warna yang ditentukan secara eksplisit
Garis pemisah Abu-abu Putih untuk memperjelas batas antarkurva Kisi
grafik Kisi bawaan Kisi minor dihilangkan dan kisi horizontal dikurangi
Keterangan data Belum tersedia Ditambahkan keterangan bahwa data
bersifat simulasi
Perubahan tersebut meningkatkan keterbacaan dan membantu pembaca membandingkan distribusi antarwilayah. Namun, perubahan warna dan ukuran teks tidak mengubah informasi statistik yang terkandung dalam data.
Ridgeline plot menampilkan distribusi nilai IPM melalui kurva kepadatan untuk setiap wilayah. - Posisi kurva pada sumbu horizontal menunjukkan rentang nilai IPM yang diamati. - Puncak kurva menunjukkan bagian rentang nilai dengan kepadatan observasi relatif tinggi. - Lebar kurva memperlihatkan penyebaran nilai. Kurva yang lebih lebar pada rentang tertentu menunjukkan distribusi yang lebih menyebar di rentang tersebut. - Perbedaan bentuk antarkurva membantu mengidentifikasi kemiripan atau perbedaan pola distribusi antarwilayah. Pada data simulasi yang dibuat, Afrika cenderung memiliki nilai IPM lebih rendah daripada Eropa, sedangkan distribusi Eropa lebih terkonsentrasi pada nilai yang tinggi. Ini hanya interpretasi terhadap data simulasi, bukan kesimpulan tentang IPM aktual.
Ridgeline plot tetap menjadi pilihan yang tepat untuk membandingkan distribusi IPM antarkawasan. Perbaikan utama terletak pada judul, label, warna, dan pengaturan tampilan sehingga pembaca dapat memahami pola distribusi dengan lebih mudah.
Visualisasi pada slide 20 memiliki beberapa aspek yang perlu diperbaiki. Ketiga grafik belum menampilkan nilai atau persentase secara langsung, sedangkan label kategori dan legenda berukuran kecil sehingga kurang mudah dibaca. Dari ketiga jenis grafik tersebut, diagram batang biasa lebih sesuai untuk membandingkan proporsi antarkategori karena perbedaan panjang batang lebih mudah diamati. Oleh karena itu, perbaikan difokuskan pada diagram batang dengan menambahkan label jumlah dan persentase, memperjelas judul dan label sumbu, serta menggunakan warna yang konsisten agar informasi lebih mudah dipahami.
library(ggplot2)
library(dplyr)
data_etnis <- data.frame(
etnis = c("Black", "Other", "White"),
jumlah = c(120, 350, 500)
)
data_etnis <- data_etnis %>%
mutate(
proporsi = jumlah / sum(jumlah) * 100
)
data_etnis
## etnis jumlah proporsi
## 1 Black 120 12.37113
## 2 Other 350 36.08247
## 3 White 500 51.54639
ggplot(data_etnis, aes(x = etnis, y = jumlah, fill = etnis)) +
geom_col() +
labs(
title = "Jumlah Ibu Melahirkan Berdasarkan Etnis",
x = "Etnis",
y = "Jumlah"
) +
theme_minimal()
### Visualisasi Setelah diperbaiki
data_urut <- data_etnis %>%
arrange(jumlah) %>%
mutate(
etnis = factor(etnis, levels = etnis),
label = paste0(
jumlah, " (",
sprintf("%.1f", proporsi), "%)"
)
)
ggplot(data_urut, aes(x = etnis, y = jumlah, fill = etnis)) +
geom_col(width = 0.65, show.legend = FALSE) +
geom_text(
aes(label = label),
vjust = -0.5,
size = 4
) +
scale_fill_manual(
values = c(
"Black" = "#56B4E9",
"Other" = "#009E73",
"White" = "#0072B2"
)
) +
scale_y_continuous(
expand = expansion(mult = c(0, 0.15))
) +
labs(
title = "Jumlah Ibu Melahirkan Berdasarkan Etnis",
subtitle = "Jumlah observasi dan persentase setiap kategori",
x = "Etnis",
y = "Jumlah ibu melahirkan",
caption = "Data simulasi"
) +
theme_minimal(base_size = 12) +
theme(
plot.title = element_text(face = "bold", size = 15),
plot.subtitle = element_text(size = 11),
panel.grid.minor = element_blank(),
panel.grid.major.x = element_blank()
)
| Aspek | Sebelum | Sesudah |
|---|---|---|
| Label nilai | Tidak tersedia | Jumlah dan persentase ditampilkan |
| Warna | Belum diatur secara konsisten | Warna ditetapkan untuk setiap kategori |
| Keterbacaan | Pembaca harus memperkirakan nilai dari sumbu | Nilai dapat dibaca langsung |
| Perbandingan | Bergantung pada tinggi batang | Lebih mudah membandingkan jumlah dan proporsi |
Berdasarkan data simulasi, kategori White memiliki jumlah tertinggi, yaitu 500 atau 51,5%, sedangkan Black memiliki jumlah terendah, yaitu 120 atau 12,4%.
diagram batang biasa merupakan pilihan yang baik jika tujuan utamanya membandingkan jumlah antarkategori. Diagram lingkaran tetap berguna untuk menunjukkan komposisi keseluruhan, sedangkan diagram batang bertumpuk dapat digunakan untuk menunjukkan bagian-bagian dalam satu total. Pemilihan grafik sebaiknya disesuaikan dengan informasi yang ingin ditekankan.
Pada slide 23, treemap digunakan untuk memperlihatkan komposisi tujuan ekspor Indonesia tahun 2019 berdasarkan benua dan negara. Luas setiap kotak merepresentasikan nilai ekspor, sedangkan warna digunakan untuk membedakan kelompok benua.
Jenis visualisasi ini sesuai karena memungkinkan pembaca melihat komposisi nilai ekspor berdasarkan negara dan kelompok benua. Namun, berdasarkan gambar slide, terdapat beberapa aspek yang dapat diperbaiki.
Perbaikan difokuskan pada keterbacaan label, konsistensi warna, dan kejelasan informasi tanpa mengganti jenis grafik. Data simulasi digunakan untuk membandingkan visualisasi awal dan hasil perbaikan karena nilai ekspor asli pada slide tidak tersedia secara lengkap.
library(ggplot2)
library(dplyr)
library(treemapify)
data_ekspor <- data.frame(
benua = c(
"Asia", "Asia", "Asia", "Asia", "Asia",
"Amerika Utara", "Amerika Utara", "Amerika Utara",
"Eropa", "Eropa", "Eropa",
"Oseania", "Oseania",
"Afrika", "Afrika",
"Amerika Selatan", "Amerika Selatan"
),
negara = c(
"China", "Jepang", "Singapura", "India", "Korea Selatan",
"Amerika Serikat", "Kanada", "Meksiko",
"Jerman", "Belanda", "Italia",
"Australia", "Selandia Baru",
"Mesir", "Afrika Selatan",
"Brasil", "Chile"
),
nilai_ekspor = c(
500, 350, 250, 180, 150,
400, 120, 100,
220, 180, 130,
150, 70,
80, 90,
110, 60
)
)
head(data_ekspor)
## benua negara nilai_ekspor
## 1 Asia China 500
## 2 Asia Jepang 350
## 3 Asia Singapura 250
## 4 Asia India 180
## 5 Asia Korea Selatan 150
## 6 Amerika Utara Amerika Serikat 400
ggplot(
data_ekspor,
aes(
area = nilai_ekspor,
fill = benua,
label = negara,
subgroup = benua
)
) +
geom_treemap(
color = "#8C6F63",
linewidth = 0.4
) +
geom_treemap_subgroup_border(
color = "#6F5146",
linewidth = 0.8
) +
geom_treemap_text(
place = "bottom",
grow = FALSE,
reflow = TRUE,
min.size = 2,
size = 3,
color = "blue",
fontface = "plain"
) +
geom_treemap_subgroup_text(
place = "centre",
grow = FALSE,
color = "white",
fontface = "bold",
min.size = 4,
size = 4
) +
scale_fill_manual(
values = c(
"Asia" = "#E7B08F",
"Amerika Utara" = "#D9ADC2",
"Eropa" = "#B7C5D9",
"Oseania" = "#B8D8B1",
"Afrika" = "#B5D6C0",
"Amerika Selatan" = "#D8C4A4"
)
) +
labs(
title = NULL,
fill = NULL
) +
theme_void() +
theme(
legend.position = "none",
plot.margin = margin(5, 5, 5, 5)
)
### Visualiasi perbaikannya
ggplot(
data_ekspor,
aes(
area = nilai_ekspor,
fill = benua,
label = negara,
subgroup = benua
)
) +
geom_treemap(
color = "white",
linewidth = 0.8
) +
geom_treemap_subgroup_border(
color = "grey30",
linewidth = 1.2
) +
geom_treemap_text(
place = "centre",
grow = FALSE,
reflow = TRUE,
min.size = 5,
color = "black",
fontface = "plain"
) +
scale_fill_manual(
values = c(
"Asia" = "#56B4E9",
"Amerika Utara" = "#E69F00",
"Eropa" = "#009E73",
"Oseania" = "#CC79A7",
"Afrika" = "#D55E00",
"Amerika Selatan" = "#0072B2"
)
) +
labs(
title = "Komposisi Nilai Ekspor Menurut Negara Tujuan dan Benua",
subtitle = "Luas kotak menunjukkan nilai ekspor",
caption = "Data simulasi, bukan data ekspor aktual tahun 2019"
) +
theme_void(base_size = 12) +
theme(
plot.title = element_text(
face = "bold",
size = 14,
color = "grey15"
),
plot.subtitle = element_text(
size = 11,
color = "grey30"
),
plot.caption = element_text(
size = 9,
color = "grey40"
),
legend.position = "right",
legend.title = element_text(face = "bold"),
plot.margin = margin(10, 10, 10, 10)
)
### Penjelasan Perbaikan
Perbaikan visualisasi treemap dilakukan dengan menggunakan warna yang lebih kontras untuk membedakan setiap benua. Garis putih digunakan untuk memperjelas batas antarkotak, sedangkan label negara dibuat berwarna hitam agar lebih mudah dibaca. Ukuran minimum teks juga ditetapkan agar nama negara pada kotak yang terlalu kecil tidak ditampilkan dan tidak menyebabkan tumpang tindih. Selain itu, judul dan keterangan diperjelas untuk menunjukkan bahwa luas kotak merepresentasikan nilai ekspor.
Treemap menyajikan komposisi nilai ekspor berdasarkan negara tujuan dan kelompok benua. Luas kotak menunjukkan besarnya nilai ekspor relatif terhadap negara lainnya, sedangkan warna membedakan kelompok benua. Kotak yang lebih besar menunjukkan nilai ekspor yang lebih besar dalam data yang digunakan.
Melalui visualisasi yang telah diperbaiki, pembaca diharapkan lebih mudah mengenali negara dengan nilai ekspor relatif besar dan memahami pengelompokan negara berdasarkan benua. Penyederhanaan label juga membantu mengurangi kepadatan informasi pada kotak berukuran kecil.
Namun, karena analisis ini menggunakan data simulasi, hasil visualisasi tidak dapat digunakan untuk menyimpulkan negara tujuan ekspor terbesar Indonesia pada tahun 2019. Interpretasi hanya berlaku untuk data simulasi yang digunakan dalam demonstrasi.
Perbaikan treemap difokuskan pada peningkatan keterbacaan label, penggunaan warna yang lebih kontras, dan kejelasan informasi yang disampaikan. Jenis visualisasi tetap dipertahankan karena sesuai untuk menunjukkan komposisi nilai ekspor berdasarkan negara dan benua. Dengan perbaikan tersebut, informasi diharapkan dapat disampaikan secara lebih jelas tanpa mengubah tujuan utama visualisasi.
Pada slide 27, diagram batang digunakan untuk memperlihatkan persentase petani dengan lahan kecil di Kamboja dari tahun 2012 hingga 2015. Grafik sebelah kiri hanya menampilkan nilai persentase, sedangkan grafik sebelah kanan menambahkan error bar untuk menunjukkan rentang ketidakpastian estimasi.
Diagram batang sudah sesuai untuk membandingkan nilai antartahun. Namun, grafik tanpa error bar tidak memberikan informasi mengenai ketidakpastian estimasi. Pada grafik dengan error bar, judul dan keterangan juga perlu diperjelas agar pembaca memahami arti rentang tersebut.
Perbaikan difokuskan pada penambahan error bar, penggunaan warna yang lebih jelas, serta penjelasan mengenai nilai persentase dan rentang ketidakpastian. Data simulasi digunakan karena nilai numerik dan definisi interval pada grafik asli tidak tersedia secara lengkap.
library(ggplot2)
library(dplyr)
data_kamboja <- data.frame(
tahun = 2012:2015,
persentase = c(42, 41, 40.5, 39.5),
batas_bawah = c(38.5, 37.5, 36.8, 36.0),
batas_atas = c(45.0, 44.5, 43.8, 43.5)
)
data_kamboja
## tahun persentase batas_bawah batas_atas
## 1 2012 42.0 38.5 45.0
## 2 2013 41.0 37.5 44.5
## 3 2014 40.5 36.8 43.8
## 4 2015 39.5 36.0 43.5
ggplot(
data_kamboja,
aes(x = tahun, y = persentase)
) +
geom_col(
fill = "#A8D5C8",
width = 0.65
) +
labs(
title = "Persentase Petani dengan Lahan Kecil di Kamboja",
x = "Tahun",
y = "Persentase (%)"
) +
theme_minimal()
ggplot(
data_kamboja,
aes(x = tahun, y = persentase)
) +
geom_col(
fill = "#56B4E9",
width = 0.6,
alpha = 0.85
) +
geom_errorbar(
aes(
ymin = batas_bawah,
ymax = batas_atas
),
width = 0.12,
linewidth = 0.8,
color = "#333333"
) +
geom_text(
aes(
y = batas_atas + 1.5,
label = paste0(persentase, "%")
),
vjust = 0,
size = 3.5
) +
scale_x_continuous(
breaks = 2012:2015
) +
scale_y_continuous(
limits = c(0, 50),
breaks = seq(0, 50, 10),
expand = expansion(mult = c(0, 0))
) +
coord_cartesian(
ylim = c(0, 50),
clip = "off"
) +
labs(
title = "Persentase Petani dengan Lahan Kecil di Kamboja",
subtitle = "Perbandingan estimasi dan rentang ketidakpastian",
x = "Tahun",
y = "Persentase (%)",
caption = "Data simulasi, bukan data penelitian aktual"
) +
theme_minimal(base_size = 12) +
theme(
plot.title = element_text(
face = "bold",
size = 14
),
plot.subtitle = element_text(size = 11),
axis.title = element_text(face = "bold"),
panel.grid.minor = element_blank(),
panel.grid.major.x = element_blank(),
plot.caption = element_text(
size = 9,
color = "grey40"
),
plot.margin = margin(
t = 15,
r = 10,
b = 10,
l = 10
)
)
Perbaikan dilakukan dengan menambahkan error bar pada setiap batang untuk menunjukkan batas bawah dan batas atas rentang ketidakpastian. Label persentase juga ditambahkan agar nilai estimasi dapat dibaca secara langsung. Selain itu, warna batang, judul, dan label sumbu diperjelas agar informasi lebih mudah dipahami.
Diagram batang menunjukkan perubahan persentase petani dengan lahan kecil dari tahun ke tahun. Sementara itu, error bar memberikan informasi mengenai rentang ketidakpastian dari nilai estimasi yang ditampilkan.
Pada data simulasi, persentase menurun dari 42% pada 2012 menjadi 39,5% pada 2015. Rentang error bar memperlihatkan bahwa setiap estimasi memiliki ketidakpastian. Namun, penurunan nilai estimasi saja belum cukup untuk menyimpulkan adanya perubahan yang signifikan secara statistik. Kesimpulan tersebut memerlukan informasi mengenai jenis interval yang digunakan dan metode analisis yang sesuai.
Visualisasi menunjukkan bahwa persentase petani dengan lahan kecil di Kamboja mengalami penurunan secara bertahap, dari 42% pada tahun 2012 menjadi 39,5% pada tahun 2015. Penambahan error bar membantu menunjukkan rentang ketidakpastian pada setiap estimasi, sehingga informasi yang disajikan tidak hanya berfokus pada nilai persentase, tetapi juga memperlihatkan variasi atau ketidakpastian di sekitarnya.
Informasi utama dari visualisasi ini adalah bahwa diagram batang dengan error bar memberikan informasi yang lebih lengkap dibandingkan diagram batang biasa. Namun, karena data yang digunakan merupakan data simulasi, hasil tersebut hanya menggambarkan contoh penyajian visualisasi dan bukan kesimpulan mengenai kondisi aktual petani di Kamboja.
Penambahan error bar membuat visualisasi lebih informatif karena pembaca tidak hanya melihat nilai persentase, tetapi juga rentang ketidakpastian estimasi. Dengan demikian, grafik batang dengan error bar lebih sesuai ketika tujuan visualisasi adalah membandingkan estimasi sekaligus memperlihatkan ketidakpastiannya.
Visualisasi jaringan pada slide menunjukkan hubungan perdagangan antarnegara ASEAN melalui simpul (node) dan garis penghubung (edge) yang memiliki arah. Namun, beberapa garis saling berpotongan sehingga hubungan antarnegara sulit ditelusuri. Selain itu, ukuran simpul terlihat relatif seragam dan belum menjelaskan perbedaan peran atau besarnya aktivitas perdagangan setiap negara. Penggunaan warna garis yang berbeda juga belum disertai keterangan yang jelas.
Oleh karena itu, perbaikan difokuskan pada pengaturan posisi simpul, penggunaan warna yang konsisten, penambahan legenda, serta penjelasan arah hubungan perdagangan. Data yang digunakan merupakan data simulasi, bukan data perdagangan aktual ASEAN.
# install.packages(c("igraph", "ggraph", "ggplot2", "dplyr"))
library(igraph)
library(ggraph)
library(ggplot2)
library(dplyr)
# Data simulasi perdagangan antarnegara ASEAN
data_perdagangan <- data.frame(
asal = c(
"Indonesia", "Indonesia", "Indonesia",
"Thailand", "Thailand", "Thailand",
"Malaysia", "Malaysia",
"Singapura", "Singapura",
"Filipina", "Vietnam"
),
tujuan = c(
"Singapura", "Malaysia", "Filipina",
"Malaysia", "Vietnam", "Singapura",
"Singapura", "Vietnam",
"Thailand", "Vietnam",
"Thailand", "Indonesia"
),
nilai = c(
80, 60, 35,
55, 40, 45,
70, 30,
65, 50,
25, 20
)
)
data_perdagangan
## asal tujuan nilai
## 1 Indonesia Singapura 80
## 2 Indonesia Malaysia 60
## 3 Indonesia Filipina 35
## 4 Thailand Malaysia 55
## 5 Thailand Vietnam 40
## 6 Thailand Singapura 45
## 7 Malaysia Singapura 70
## 8 Malaysia Vietnam 30
## 9 Singapura Thailand 65
## 10 Singapura Vietnam 50
## 11 Filipina Thailand 25
## 12 Vietnam Indonesia 20
Visualisasi awal menggunakan simpul (node) untuk mewakili negara dan garis penghubung (edge) untuk menunjukkan hubungan perdagangan antarnegara ASEAN. Namun, beberapa garis saling berpotongan sehingga hubungan antarnegara sulit ditelusuri. Selain itu, belum terdapat keterangan yang jelas mengenai makna warna dan ketebalan garis.
jaringan <- graph_from_data_frame(
data_perdagangan,
directed = TRUE
)
set.seed(123)
ggraph(jaringan, layout = "fr") +
geom_edge_link(
aes(width = nilai),
colour = "#56A6D9",
alpha = 0.65,
arrow = arrow(
length = unit(3, "mm"),
type = "closed"
),
end_cap = circle(4, "mm")
) +
geom_node_point(
size = 7,
colour = "#007C91"
) +
geom_node_text(
aes(label = name),
repel = TRUE,
size = 3.5,
fontface = "bold"
) +
scale_edge_width(
range = c(0.5, 2.5),
name = "Nilai perdagangan"
) +
labs(
title = "Jaringan Perdagangan Antarnegara ASEAN",
subtitle = "Ketebalan garis menunjukkan nilai perdagangan simulasi",
caption = "Data simulasi, bukan data perdagangan aktual"
) +
theme_void(base_size = 12) +
theme(
plot.title = element_text(
face = "bold",
size = 15
),
plot.subtitle = element_text(size = 11),
plot.caption = element_text(
size = 9,
color = "grey40"
),
legend.position = "bottom"
)
repel = TRUE untuk mengurangi
tumpang tindih.Jaringan memperlihatkan hubungan perdagangan antarnegara berdasarkan arah dan nilai perdagangan simulasi. Garis yang lebih tebal menunjukkan nilai perdagangan yang lebih besar, sedangkan panah menunjukkan arah hubungan. Visualisasi ini dapat membantu mengidentifikasi negara yang memiliki banyak hubungan perdagangan. Namun, karena datanya merupakan simulasi, hasilnya tidak menggambarkan pola perdagangan ASEAN yang sebenarnya.
Diagram jaringan sesuai untuk menggambarkan hubungan antarnegara yang saling terhubung. Informasi utama yang dapat disampaikan meliputi arah perdagangan, jumlah hubungan yang dimiliki setiap negara, dan perbedaan nilai perdagangan antarpasangan negara. Pengaturan posisi simpul, ketebalan garis, dan arah panah membuat hubungan tersebut lebih mudah dibaca.
Perbaikan dilakukan dengan mengurangi tumpang tindih label, membedakan ketebalan garis berdasarkan nilai perdagangan, dan memperjelas arah hubungan. Dengan demikian, diagram jaringan dapat menyampaikan struktur hubungan perdagangan secara lebih informatif.
isualisasi word cloud pada slide menampilkan banyak nama dengan ukuran dan warna yang bervariasi. Nama yang sering muncul dibuat lebih besar, tetapi kepadatan kata dan penggunaan warna yang beragam membuat beberapa nama sulit dibaca. Selain itu, tidak terdapat keterangan yang menjelaskan bahwa ukuran kata merepresentasikan frekuensi kemunculannya.
Oleh karena itu, perbaikan difokuskan pada pembatasan jumlah kata, pemilihan warna yang lebih konsisten, dan penambahan judul serta keterangan agar informasi utama lebih mudah dipahami.
# Jalankan satu kali jika paket belum tersedia
# install.packages(c("ggplot2", "dplyr", "ggwordcloud"))
library(ggplot2)
library(dplyr)
library(ggwordcloud)
data_nama <- data.frame(
nama = c(
"Muhammad", "Budi", "Siti", "Dewi", "Putri",
"Ahmad", "Nurul", "Rizki", "Aulia", "Nabila",
"Rahma", "Andi", "Fitri", "Dimas", "Rina",
"Wahyu", "Anisa", "Fajar", "Indah", "Zahra",
"Agus", "Dian", "Rani", "Hafiz", "Intan"
),
frekuensi = c(
100, 75, 65, 58, 52,
48, 45, 42, 39, 35,
32, 30, 28, 26, 24,
22, 20, 18, 17, 16,
14, 13, 12, 10, 8
)
)
data_nama
## nama frekuensi
## 1 Muhammad 100
## 2 Budi 75
## 3 Siti 65
## 4 Dewi 58
## 5 Putri 52
## 6 Ahmad 48
## 7 Nurul 45
## 8 Rizki 42
## 9 Aulia 39
## 10 Nabila 35
## 11 Rahma 32
## 12 Andi 30
## 13 Fitri 28
## 14 Dimas 26
## 15 Rina 24
## 16 Wahyu 22
## 17 Anisa 20
## 18 Fajar 18
## 19 Indah 17
## 20 Zahra 16
## 21 Agus 14
## 22 Dian 13
## 23 Rani 12
## 24 Hafiz 10
## 25 Intan 8
library(ggplot2)
library(ggwordcloud)
ggplot(
data_nama,
aes(
label = nama,
size = frekuensi,
color = nama
)
) +
geom_text_wordcloud(
area_corr = TRUE,
rm_outside = TRUE,
shape = "ellipse",
eccentricity = 0.55,
grid_size = 2,
seed = 123
) +
scale_size_area(
max_size = 28,
name = "Frekuensi"
) +
scale_color_manual(
values = grDevices::hcl.colors(
nrow(data_nama),
palette = "Dynamic"
),
guide = "none"
) +
labs(
title = "Word Cloud Frekuensi Nama",
subtitle = "Ukuran kata menunjukkan frekuensi kemunculan",
caption = "Data simulasi, bukan data aktual"
) +
theme_void(base_size = 12) +
theme(
plot.title = element_text(
face = "bold",
size = 15,
hjust = 0.5
),
plot.subtitle = element_text(
size = 11,
hjust = 0.5
),
plot.caption = element_text(
size = 9,
color = "grey40"
)
)
### Penjelasan Perbaikan
Visualisasi word cloud telah diperbaiki dengan mempertahankan penggunaan warna yang beragam dan bentuk kumpulan kata yang menyerupai oval. Ukuran setiap nama disesuaikan dengan frekuensi kemunculannya, sehingga nama yang memiliki frekuensi lebih tinggi ditampilkan dengan ukuran lebih besar. Judul dan subjudul ditambahkan untuk memperjelas bahwa ukuran kata merepresentasikan frekuensi kemunculan, sedangkan keterangan di bagian bawah menunjukkan bahwa data yang digunakan merupakan data simulasi.
Meskipun demikian, beberapa kata masih terlihat berdekatan dan distribusi warna yang beragam belum menunjukkan tingkatan nilai tertentu. Oleh karena itu, warna berfungsi sebagai pembeda antarnama, bukan sebagai indikator frekuensi.
### Interpretasi
Berdasarkan visualisasi, nama seperti Rizki, Rafi, Citra, Agus, dan Aulia terlihat menonjol karena ditampilkan dengan ukuran relatif besar. Hal ini menunjukkan bahwa nama-nama tersebut memiliki frekuensi kemunculan yang relatif tinggi dalam data simulasi. Sebaliknya, nama dengan ukuran lebih kecil memiliki frekuensi kemunculan yang relatif rendah.
### Makna dan Informasi Utama
Informasi utama yang disampaikan adalah dominasi nama berdasarkan frekuensi kemunculannya. Ukuran kata membantu pembaca mengenali nama yang paling sering muncul secara cepat, sedangkan variasi warna memudahkan pembedaan antarnama. Namun, word cloud lebih sesuai untuk memberikan gambaran umum daripada membandingkan frekuensi secara akurat.
### Kesimpulan
Visualisasi word cloud memberikan gambaran ringkas mengenai nama-nama yang dominan dalam data. Penambahan judul, subjudul, dan keterangan data memperjelas konteks visualisasi. Penggunaan warna yang beragam tetap dipertahankan sebagai unsur pembeda, sementara ukuran kata menjadi elemen utama untuk menunjukkan frekuensi kemunculan.
# 11.Slide 30: Perbaikan Visualisasi Peta Tematik
## Identifikasi Masalah
Visualisasi pada slide 30 sudah menggunakan peta tematik yang sesuai untuk menampilkan persebaran tingkat kemiskinan antarprovinsi. Namun, peta masih dapat diperbaiki melalui pemilihan gradasi warna yang lebih jelas, penambahan judul yang informatif, serta pengaturan legenda agar rentang persentase lebih mudah dipahami. Selain itu, sumber data perlu dicantumkan agar informasi yang disajikan dapat ditelusuri.
Oleh karena itu, perbaikan difokuskan pada penggunaan gradasi warna yang konsisten, legenda dengan satuan persentase, serta tampilan peta yang lebih bersih. Data yang digunakan pada contoh berikut merupakan data simulasi, bukan data kemiskinan aktual tahun 2020.
### Data Simulasi
``` r
library(geodata)
library(sf)
library(ggplot2)
library(dplyr)
# Mengambil batas administrasi provinsi Indonesia
peta_provinsi <- geodata::gadm(
country = "IDN",
level = 1,
path = tempdir()
)
peta_provinsi <- st_as_sf(peta_provinsi)
# Membuat data simulasi
set.seed(123)
peta_provinsi <- peta_provinsi %>%
mutate(
persentase_kemiskinan = round(
runif(n(), min = 4, max = 28),
1
)
)
head(
st_drop_geometry(peta_provinsi)[
c("NAME_1", "persentase_kemiskinan")
]
)
## NAME_1 persentase_kemiskinan
## 1 Aceh 10.9
## 2 Bali 22.9
## 3 Bangka Belitung 13.8
## 4 Banten 25.2
## 5 Bengkulu 26.6
## 6 Gorontalo 5.1
Visualisasi awal pada slide menggunakan gradasi warna biru muda hingga biru yang lebih gelap. Pendekatan ini sesuai untuk peta tematik karena perbedaan warna dapat menunjukkan variasi nilai antardaerah. Namun, judul dan legenda dapat dibuat lebih jelas agar pembaca lebih mudah memahami informasi yang disajikan.
ggplot(peta_provinsi) +
geom_sf(
aes(fill = persentase_kemiskinan),
color = "white",
linewidth = 0.25
) +
scale_fill_gradient(
low = "#EAF4FB",
high = "#0868AC",
name = "Kemiskinan (%)",
breaks = seq(5, 25, 5),
limits = c(0, 30),
labels = function(x) paste0(x, "%"),
oob = scales::squish
) +
labs(
title = "Persebaran Persentase Kemiskinan Antarprovinsi",
subtitle = "Indonesia, data simulasi",
caption = paste(
"Sumber batas wilayah: GADM.",
"Nilai kemiskinan merupakan data simulasi."
)
) +
coord_sf(datum = NA) +
theme_void(base_size = 12) +
theme(
plot.title = element_text(
face = "bold",
size = 15
),
plot.subtitle = element_text(
size = 11,
color = "grey35"
),
legend.position = "bottom",
legend.title = element_text(
face = "bold",
size = 10
),
legend.text = element_text(size = 9),
plot.caption = element_text(
size = 9,
color = "grey40"
),
plot.margin = margin(12, 12, 12, 12)
) +
guides(
fill = guide_colorbar(
barwidth = 18,
barheight = 0.7,
title.position = "top",
title.hjust = 0.5
)
)
Pada peta, provinsi dengan warna biru yang lebih gelap memiliki nilai kemiskinan simulasi yang lebih tinggi, sedangkan provinsi dengan warna lebih terang memiliki nilai yang lebih rendah. Peta tematik membantu pembaca mengenali variasi geografis secara cepat. Namun, karena nilainya dibuat secara acak untuk simulasi, pola yang terlihat tidak dapat digunakan untuk menyimpulkan kondisi kemiskinan aktual di Indonesia.
Peta tematik merupakan visualisasi yang sesuai untuk menunjukkan persebaran suatu indikator berdasarkan wilayah geografis. Gradasi warna memungkinkan pembaca membandingkan tingkat kemiskinan antarprovinsi secara visual. Informasi utama yang ingin disampaikan adalah perbedaan nilai antardaerah, dengan catatan bahwa interpretasi substantif hanya dapat dilakukan jika peta menggunakan data aktual yang valid.
Perbaikan peta tematik dilakukan dengan memperjelas gradasi warna, batas wilayah, legenda, judul, dan sumber data. Perbaikan tersebut meningkatkan keterbacaan peta serta memudahkan pembaca memahami variasi nilai antardaerah. Untuk analisis kemiskinan yang sesungguhnya, data simulasi perlu diganti dengan data resmi dari sumber yang relevan.