Dokumen ini memuat laporan penyelesaian tugas visualisasi data
menggunakan paket ggplot2 dan ekosistem
tidyverse. Laporan ini mencakup 5 studi kasus
visualisasi:
mpg).diamonds).economics).library(tidyverse)
library(scales)
mpgcty) untuk tiap pabrikan (manufacturer).# 1. Agregasi rata-rata cty per pabrikan
mean_manufacturer <- mpg |>
group_by(manufacturer) |>
summarise(mean_cty = mean(cty))
# 2. Mengambil Top 10 pabrikan dengan nilai tertinggi
top_10_manufacturer <- mean_manufacturer |>
arrange(desc(mean_cty)) |>
slice_head(n = 10)
# Menampilkan tabel ringkasan
top_10_manufacturer
# 3. Visualisasi Bar Chart Terurut
ggplot(
top_10_manufacturer,
aes(
x = reorder(manufacturer, mean_cty),
y = mean_cty
)
) +
geom_col(fill = "steelblue") +
coord_flip() +
labs(
title = "Top 10 Manufacturers by Average City MPG",
x = "Manufacturer",
y = "Average City MPG"
) +
theme_minimal()
Top 10 Pabrikan Berdasarkan Rata-rata City MPG
Interpretasi Soal 1:
Pabrikan dengan rata-rata city MPG tertinggi menempati urutan teratas pada diagram. Hal ini menunjukkan kendaraan dari pabrikan tersebut memiliki efisiensi konsumsi bahan bakar paling hemat untuk penggunaan dalam kota di antara 10 pabrikan teratas.
diamondsprice).cut).scales::comma.ggplot(
diamonds,
aes(
x = cut,
y = price,
fill = cut
)
) +
geom_boxplot() +
scale_y_continuous(labels = comma) +
labs(
title = "Distribution of Diamond Price by Cut",
x = "Cut",
y = "Price (USD)"
) +
theme_minimal() +
theme(legend.position = "none")
Distribusi Harga Berlian Berdasarkan Kualitas Cut
Interpretasi Soal 2:
Distribusi harga memperlihatkan rentang variasi yang luas pada setiap kategori cut. Semua kategori memiliki nilai pencilan (outliers) yang signifikan pada kisaran harga tinggi (> $10.000). Nilai median harga antar kualitas cut relatif mirip, yang mengindikasikan bahwa harga tidak hanya ditentukan oleh potongan (cut), melainkan sangat dipengaruhi oleh ukuran karat (carat).
diamondsset.seed(123)).carat)
dan harga (price).alpha = 0.6) untuk
mengatasi overplotting.# Pengambilan sampel acak
set.seed(123)
diamonds_sample <- diamonds |>
slice_sample(n = 1000)
# Visualisasi scatter plot
ggplot(
diamonds_sample,
aes(
x = carat,
y = price,
color = cut
)
) +
geom_point(alpha = 0.6, size = 2) +
scale_y_continuous(labels = comma) +
labs(
title = "Relationship Between Carat and Price",
x = "Carat",
y = "Price (USD)",
color = "Cut Quality"
) +
theme_minimal()
Hubungan Antara Carat dan Price pada Sampel 1.000 Berlian
Interpretasi Soal 3:
Terdapat korelasi positif non-linier yang sangat kuat antara ukuran karat dan harga berlian. Semakin besar nilai karat, harga berlian meningkat secara eksponensial. Pada tingkat karat yang sama, variasi harga dipengaruhi oleh kualitas cut, warna, dan kejernihan (clarity).
economicspsavert) terhadap waktu (date).# Mencari baris dengan nilai psavert maksimum
peak <- economics |>
filter(psavert == max(psavert))
# Visualisasi deret waktu dengan anotasi titik puncak
ggplot(
economics,
aes(
x = date,
y = psavert
)
) +
geom_line(color = "steelblue", linewidth = 1) +
geom_point(
data = peak,
color = "red",
size = 3
) +
geom_text(
data = peak,
aes(label = paste0("Puncak: ", round(psavert, 1), "%")),
vjust = -1,
color = "red",
fontface = "bold"
) +
labs(
title = "Personal Saving Rate Over Time",
subtitle = "Titik merah menandai tingkat tabungan tertinggi dalam sejarah pengamatan",
x = "Tahun",
y = "Saving Rate (%)"
) +
theme_minimal()
Tren Tingkat Tabungan Pribadi AS Sepanjang Waktu
Interpretasi Soal 4:
Tingkat tabungan pribadi di AS menunjukkan tren penurunan jangka panjang dari era 1970-an hingga awal 2000-an. Titik merah dengan jelas menandai tingkat tabungan tertinggi sepanjang sejarah dataset (mencapai 17.3% pada pertengahan 1975).
Visualisasi awal memiliki sejumlah kelemahan desain: - Ukuran titik
terlalu besar (size = 4) dan warna merah pekat tanpa
transparansi (severe overplotting). - Tidak memiliki judul
informatif atau subjudul konteks. - Label sumbu menggunakan nama
variabel teknis mentah (carat, price). -
Menggunakan tema default abu-abu yang mengalihkan perhatian.
ggplot(
diamonds_sample,
aes(carat, price)
) +
geom_point(
color = "red",
size = 4
)
Desain Awal (Kualitas Visual Rendah)
Perbaikan yang diterapkan: 1. Hierarki Teks:
Menambahkan judul deskriptif yang menyatakan temuan utama (takeaway
title). 2. Konteks Data: Menambahkan subjudul
penjelas ukuran sampel. 3. Label Sumbu Informatif:
Mengubah label menjadi satuan yang jelas (Carat dan
Price (USD)). 4. Dimensi Tambahan:
Memberikan pemetaan warna berdasarkan kualitas cut. 5.
Mengurangi Overplotting: Memperkecil ukuran titik
(size = 2) dan menambahkan transparansi
(alpha = 0.6). 6. Kebersihan Visual:
Menggunakan theme_minimal() untuk memaksimalkan
data-ink ratio.
ggplot(
diamonds_sample,
aes(
x = carat,
y = price,
color = cut
)
) +
geom_point(
alpha = 0.6,
size = 2
) +
scale_y_continuous(labels = comma) +
labs(
title = "Diamond Price Increases with Carat",
subtitle = "Sample of 1,000 Diamonds from ggplot2 diamonds dataset",
x = "Carat (Weight)",
y = "Price (USD)",
color = "Cut Quality"
) +
theme_minimal() +
theme(
plot.title = element_text(face = "bold", size = 14),
plot.subtitle = element_text(color = "grey30", size = 11),
legend.position = "right"
)
Desain Akhir Setelah Peningkatan Estetika dan Kejelasan Informasi
| Aspek Desain | Sebelum (Poor) | Sesudah (Improved) |
|---|---|---|
| Titik Data | Terlalu besar (size=4), solid |
Proporsional (size=2), transparan
(alpha=0.6) |
| Pembeda Kategori | Monokrom merah monoton | Pewarnaan berdasarkan peubah cut |
| Sumbu & Format | Format numerik polos (price) |
Format mata uang ribuan berpemisah koma
($) |
| Tipografi & Judul | Kosong | Judul temuan (action title) + subjudul konteks |
| Tema Kanvas | Default abu-abu | Tema minimalis bersih (theme_minimal) |