Mata kuliah: Eksplorasi dan Visualisasi Data
Kelas: A
Visualisasi data merupakan salah satu tahapan penting dalam analisis data karena mampu membantu peneliti memahami pola, distribusi, perbandingan, dan hubungan antarvariabel secara lebih cepat dan informatif. Dalam laporan ini, data yang digunakan adalah data Tingkat Pengangguran Terbuka (TPT) per provinsi di Indonesia pada dua periode, yaitu Februari 2025 dan Agustus 2025. Data tersebut divisualisasikan ke dalam bentuk grafik kategorik dan numerik agar karakteristik data dapat dipahami dengan lebih menyeluruh.
Fokus analisis dalam tugas ini adalah melihat bagaimana kondisi pengangguran terbuka tersebar di berbagai provinsi di Indonesia, provinsi mana yang memiliki nilai TPT tertinggi, bagaimana distribusi data antarprovinsi, serta bagaimana perubahan kondisi dari Februari ke Agustus 2025. Dengan bantuan visualisasi, informasi yang semula berbentuk tabel angka dapat menjadi lebih mudah dibaca, dibandingkan, dan diinterpretasikan.
Data yang digunakan bersumber dari Badan Pusat Statistik (BPS), yaitu data Tingkat Pengangguran Terbuka (TPT) menurut provinsi di Indonesia. Data ini dipilih karena TPT merupakan salah satu indikator ekonomi penting yang dapat menggambarkan kondisi pasar tenaga kerja pada suatu wilayah. Selain itu, data tersedia per provinsi dan memiliki dua periode waktu, sehingga sangat sesuai untuk divisualisasikan dalam bentuk grafik kategorik maupun numerik.
Sumber data: Badan Pusat Statistik (BPS)
Pemilihan data ini juga didasarkan pada kemudahan interpretasi dan relevansinya dengan isu ekonomi nasional. Dengan menggunakan data TPT per provinsi, analisis dapat menunjukkan variasi kondisi antarwilayah serta perubahan yang terjadi dari satu periode ke periode berikutnya.
Pada tahap persiapan data, file Excel diimpor ke dalam R menggunakan
paket readxl. Setelah itu dilakukan pembersihan data dengan
menghapus baris header tambahan, menyesuaikan nama kolom, dan mengubah
nilai persentase TPT menjadi tipe numerik agar dapat diproses dalam
visualisasi. Data juga diubah ke dalam format long agar
memudahkan pembuatan grafik yang membandingkan dua periode waktu, yaitu
Februari 2025 dan Agustus 2025.
library(DT)
raw <- read_excel("Tingkat_Pengangguran.xlsx")
df <- raw %>%
slice(3:n()) %>%
setNames(c("Provinsi", "Feb_2025", "Aug_2025")) %>%
mutate(
Feb_2025 = as.numeric(Feb_2025),
Aug_2025 = as.numeric(Aug_2025)
) %>%
filter(!is.na(Provinsi))
df_long <- df %>%
pivot_longer(c(Feb_2025, Aug_2025),
names_to = "Periode", values_to = "TPT") %>%
mutate(
Periode = recode(
Periode,
Feb_2025 = "Februari 2025",
Aug_2025 = "Agustus 2025"
),
Periode = factor(Periode, levels = c("Februari 2025", "Agustus 2025"))
)
datatable(df, options = list(pageLength = 10))Bar chart digunakan sebagai salah satu bentuk visualisasi data yang bertujuan untuk menampilkan perbandingan Tingkat Pengangguran Terbuka antar provinsi di Indonesia. Melalui grafik batang ini, pembaca dapat dengan mudah melihat provinsi mana yang memiliki nilai TPT lebih tinggi maupun lebih rendah. Visualisasi ini membantu menyederhanakan data numerik yang banyak sehingga pola perbandingan antarwilayah dapat terlihat dengan lebih jelas.
top10_feb <- df %>%
arrange(desc(Feb_2025)) %>%
slice_head(n = 10) %>%
mutate(Provinsi = fct_reorder(Provinsi, Feb_2025))
ggplot(top10_feb, aes(x = Provinsi, y = Feb_2025, fill = Feb_2025)) +
geom_col(show.legend = FALSE) +
coord_flip() +
scale_y_continuous(labels = label_number(suffix = "%")) +
labs(
title = "Top 10 Provinsi dengan TPT Tertinggi (Februari 2025)",
x = NULL,
y = "TPT (%)"
)Bar chart menunjukkan 10 provinsi dengan tingkat pengangguran terbuka tertinggi pada Februari 2025. Semakin panjang batang yang ditampilkan, semakin tinggi pula nilai TPT pada provinsi tersebut. Melalui grafik ini dapat dilihat bahwa terdapat provinsi tertentu yang menonjol dengan tingkat pengangguran lebih tinggi dibanding provinsi lainnya, sehingga dapat menjadi perhatian dalam analisis ketenagakerjaan.
Needle chart digunakan untuk menunjukkan besar-kecilnya suatu nilai melalui garis lurus dari titik nol menuju nilai observasi. Dalam konteks ini, needle chart dipakai untuk membandingkan nilai TPT pada Februari 2025 dan Agustus 2025 untuk provinsi-provinsi dengan TPT tertinggi. Visualisasi ini efektif karena memberikan penekanan visual pada tinggi nilai, namun tetap tampak ringkas dan mudah dibandingkan antarperiode.
df_top10_long <- df_long %>%
filter(Provinsi %in% top10_feb$Provinsi) %>%
mutate(Provinsi = fct_reorder(Provinsi, TPT, .fun = max))
ggplot(df_top10_long, aes(x = Provinsi, y = TPT, color = TPT)) +
geom_segment(aes(xend = Provinsi, y = 0, yend = TPT),
linewidth = 1.05, alpha = 0.85) +
geom_point(size = 2.7) +
coord_flip() +
facet_wrap(~Periode) +
scale_y_continuous(labels = label_number(suffix = "%")) +
labs(
title = "Needle Chart TPT Februari dan Agustus 2025",
subtitle = "10 provinsi dengan TPT tertinggi berdasarkan Februari 2025",
x = NULL,
y = "TPT (%)"
) +
theme(legend.position = "none")Needle chart memperlihatkan perbandingan nilai TPT antara Februari dan Agustus 2025 pada provinsi yang sama. Melalui dua panel periode, pembaca dapat melihat apakah suatu provinsi mengalami kenaikan atau penurunan TPT. Jika panjang jarum pada Agustus lebih rendah daripada Februari, maka kondisi pengangguran di provinsi tersebut cenderung membaik. Sebaliknya, jika lebih tinggi, maka TPT mengalami peningkatan.
Pie chart digunakan untuk menunjukkan proporsi data berdasarkan kategori tertentu. Karena jumlah provinsi cukup banyak, maka nilai TPT dikelompokkan terlebih dahulu ke dalam beberapa kelas agar pembacaan proporsinya menjadi lebih sederhana. Dengan pie chart, pembaca dapat melihat bagian terbesar dan bagian terkecil dari distribusi provinsi berdasarkan kategori TPT.
df_feb_cat <- df %>%
mutate(
Kategori_TPT_Feb = cut(
Feb_2025,
breaks = c(-Inf, 4, 5, 6, Inf),
labels = c("< 4%", "4–5%", "5–6%", "> 6%")
)
) %>%
count(Kategori_TPT_Feb) %>%
mutate(
prop = n / sum(n),
label = paste0(Kategori_TPT_Feb, "\n", percent(prop, accuracy = 1))
)
ggplot(df_feb_cat, aes(x = "", y = prop, fill = Kategori_TPT_Feb)) +
geom_col(width = 1, color = "grey20") +
coord_polar(theta = "y") +
geom_text(
aes(label = label),
position = position_stack(vjust = 0.5),
size = 3.5,
color = "white"
) +
scale_y_continuous(labels = percent) +
labs(
title = "Proporsi Provinsi berdasarkan Kategori TPT (Februari 2025)",
x = NULL,
y = NULL,
fill = "Kategori"
) +
theme(
axis.text = element_blank(),
axis.ticks = element_blank()
)Pie chart menggambarkan komposisi provinsi berdasarkan kategori TPT pada Februari 2025. Irisan yang lebih besar menunjukkan bahwa lebih banyak provinsi berada dalam kategori tersebut. Melalui grafik ini, dapat diketahui kategori TPT mana yang paling mendominasi dan bagaimana persebaran proporsi provinsi secara umum.
Peta spasial digunakan untuk menampilkan data berdasarkan wilayah geografis. Dalam analisis ini, peta spasial atau choropleth map dipakai untuk memperlihatkan persebaran Tingkat Pengangguran Terbuka per provinsi di Indonesia. Visualisasi ini sangat penting karena mampu menunjukkan pola geografis yang mungkin tidak terlihat hanya dari tabel atau grafik batang.
library(sf)
library(geodata)
library(tmap)
library(stringr)
tmap_mode("plot")
idn1 <- geodata::gadm(country = "IDN", level = 1, path = tempdir()) %>%
st_as_sf()
df_join <- df %>%
mutate(
key = str_squish(str_to_lower(Provinsi)),
key = recode(
key,
"dki jakarta" = "jakarta raya",
"di yogyakarta" = "yogyakarta",
"kep. bangka belitung" = "bangka-belitung",
"bangka belitung" = "bangka-belitung",
"kepulauan bangka belitung" = "bangka-belitung",
"kep. riau" = "riau islands",
"kepulauan riau" = "riau islands",
"papua barat daya" = "southwest papua",
"papua selatan" = "south papua",
"papua tengah" = "central papua",
"papua pegunungan" = "highland papua"
)
)
idn1_join <- idn1 %>%
mutate(key = str_squish(str_to_lower(NAME_1))) %>%
left_join(df_join, by = "key")
tm_shape(idn1_join) +
tm_polygons(
col = "Feb_2025",
title = "TPT Februari 2025 (%)",
palette = "-viridis",
style = "jenks",
n = 5,
border.col = "grey30",
lwd = 0.8,
colorNA = "grey20",
textNA = "Data tidak tersedia"
) +
tm_layout(
title = "Peta TPT per Provinsi (Februari 2025)",
frame = FALSE,
bg.color = "#0b0f14",
title.color = "white",
legend.bg.color = "#111827",
legend.bg.alpha = 1,
legend.text.color = "white",
legend.title.color = "white"
)Peta spasial menunjukkan persebaran nilai TPT antarprovinsi di Indonesia pada Februari 2025. Provinsi dengan warna yang lebih pekat menunjukkan tingkat pengangguran yang lebih tinggi, sedangkan warna yang lebih terang menunjukkan tingkat pengangguran yang lebih rendah. Melalui peta ini, pola wilayah dengan TPT tinggi dan rendah dapat dilihat secara lebih jelas, sehingga pembaca dapat memahami persebaran geografis masalah pengangguran.
Histogram digunakan untuk melihat distribusi frekuensi suatu data numerik. Dalam analisis ini, histogram dipakai untuk menggambarkan bagaimana sebaran nilai TPT Februari 2025 pada seluruh provinsi. Visualisasi ini dapat membantu melihat rentang nilai yang paling sering muncul, serta memberikan gambaran awal mengenai bentuk distribusi data.
ggplot(df, aes(x = Feb_2025, fill = Feb_2025)) +
geom_histogram(bins = 12, alpha = 0.92, color = "grey20") +
labs(
title = "Histogram TPT Februari 2025",
x = "TPT (%)",
y = "Frekuensi"
) +
theme(legend.position = "none")Histogram menunjukkan sebaran nilai TPT antarprovinsi pada Februari 2025. Batang yang lebih tinggi menunjukkan lebih banyak provinsi berada pada rentang nilai tersebut. Dengan demikian, histogram membantu melihat rentang TPT yang paling umum serta mengidentifikasi apakah terdapat kecenderungan distribusi yang simetris atau tidak.
Box plot digunakan untuk merangkum distribusi data numerik melalui median, kuartil, rentang interkuartil, serta pencilan (outlier). Grafik ini sangat berguna untuk membandingkan dua kelompok data sekaligus, dalam hal ini TPT Februari 2025 dan Agustus 2025. Dengan box plot, pembaca dapat melihat perbedaan pusat data dan keragaman data secara ringkas.
ggplot(df_long, aes(x = Periode, y = TPT, fill = Periode)) +
geom_boxplot(width = 0.55, outlier.alpha = 0.75) +
scale_y_continuous(labels = label_number(suffix = "%")) +
labs(
title = "Box Plot TPT: Februari vs Agustus 2025",
x = NULL,
y = "TPT (%)"
) +
theme(legend.position = "none")Box plot memperlihatkan perbedaan median, rentang kuartil, dan keberadaan outlier antara Februari dan Agustus 2025. Apabila median antarperiode berbeda, maka terdapat pergeseran nilai tengah TPT. Sementara itu, panjang kotak dan whisker menggambarkan besar kecilnya variasi nilai antarprovinsi.
Violin plot merupakan kombinasi antara box plot dan density plot. Grafik ini menampilkan ringkasan statistik data sekaligus memperlihatkan kepadatan distribusi pada setiap rentang nilai. Oleh karena itu, violin plot sangat berguna untuk melihat bentuk distribusi TPT secara lebih rinci pada masing-masing periode.
ggplot(df_long, aes(x = Periode, y = TPT, fill = Periode)) +
geom_violin(trim = FALSE, alpha = 0.85) +
geom_boxplot(width = 0.12, outlier.size = 1) +
labs(
title = "Violin Plot TPT: Februari vs Agustus 2025",
x = NULL,
y = "TPT (%)"
) +
theme(legend.position = "none")Violin plot menunjukkan bahwa distribusi nilai TPT tidak hanya dapat dilihat dari median dan kuartil, tetapi juga dari lebar bentuk violin pada setiap bagian. Semakin lebar bagian violin, semakin banyak provinsi yang berada di rentang nilai tersebut. Dengan demikian, violin plot memberikan gambaran distribusi yang lebih kaya dibanding box plot biasa.
QQ-plot digunakan untuk mengevaluasi apakah suatu data numerik mengikuti distribusi normal. Dalam konteks ini, QQ-plot dipakai untuk memeriksa apakah nilai TPT pada Agustus 2025 memiliki pola yang mendekati distribusi normal. Grafik ini membandingkan kuantil data sampel dengan kuantil distribusi normal teoritis.
ggplot(df, aes(sample = Aug_2025)) +
stat_qq(alpha = 0.85) +
stat_qq_line() +
labs(
title = "QQ-Plot TPT Agustus 2025",
x = "Theoretical Quantiles",
y = "Sample Quantiles"
)Jika titik-titik pada QQ-plot mengikuti garis diagonal, maka distribusi data cenderung mendekati normal. Sebaliknya, jika titik-titik menyimpang cukup jauh dari garis, terutama di bagian ujung, maka data kemungkinan tidak berdistribusi normal secara sempurna. Grafik ini membantu memberikan gambaran visual terhadap asumsi normalitas.
Scatterplot digunakan untuk melihat hubungan antara dua variabel numerik. Dalam laporan ini, scatterplot dipakai untuk membandingkan nilai TPT Februari 2025 dengan TPT Agustus 2025 pada setiap provinsi. Setiap titik mewakili satu provinsi, sehingga pola hubungan antara kedua periode dapat diamati secara langsung.
ggplot(df, aes(x = Feb_2025, y = Aug_2025)) +
geom_point(aes(color = Aug_2025), size = 2.2, alpha = 0.9) +
geom_smooth(method = "lm", se = FALSE, linewidth = 1.05, alpha = 0.9) +
scale_x_continuous(labels = label_number(suffix = "%")) +
scale_y_continuous(labels = label_number(suffix = "%")) +
labs(
title = "Scatterplot: TPT Februari vs Agustus 2025",
x = "TPT Februari 2025",
y = "TPT Agustus 2025",
color = "TPT Aug"
)Scatterplot memperlihatkan hubungan positif antara nilai TPT Februari dan Agustus 2025. Apabila titik-titik cenderung membentuk pola dari kiri bawah ke kanan atas, maka provinsi yang memiliki TPT tinggi pada Februari cenderung tetap tinggi pada Agustus. Garis regresi membantu memperjelas arah kecenderungan hubungan tersebut.
Line chart digunakan untuk menunjukkan perubahan suatu nilai dari satu periode ke periode lainnya. Pada analisis ini, line chart dipakai untuk memperlihatkan perubahan rata-rata TPT seluruh provinsi antara Februari 2025 dan Agustus 2025. Grafik garis sangat efektif untuk menunjukkan arah perubahan secara sederhana dan mudah dipahami.
avg_tpt <- df_long %>%
group_by(Periode) %>%
summarise(Rata2_TPT = mean(TPT, na.rm = TRUE), .groups = "drop")
ggplot(avg_tpt, aes(x = Periode, y = Rata2_TPT, group = 1)) +
geom_line(linewidth = 1.25, alpha = 0.92) +
geom_point(size = 3) +
scale_y_continuous(labels = label_number(suffix = "%")) +
labs(
title = "Line Chart Rata-rata TPT per Periode",
x = NULL,
y = "Rata-rata TPT (%)"
)Line chart menunjukkan perubahan rata-rata TPT provinsi dari Februari ke Agustus 2025. Jika garis bergerak naik, maka rata-rata TPT meningkat, sedangkan jika garis bergerak turun, maka rata-rata TPT menurun. Visualisasi ini memudahkan pembaca melihat perubahan kondisi ketenagakerjaan secara umum pada dua periode pengamatan.