Data yang digunakan dalam tugas ini merupakan data Jumlah Perjalanan Wisatawan Nusantara Menurut Provinsi Asal Tahun 2024-2025. Dataset ini bersumber dari website resmi Badan Pusat Statistik Indonesia. Dataset ini memuat informasi mengenai jumlah perjalanan wisatawan domestik (wisatawan nusantara) yang dilakukan oleh penduduk di setiap provinsi di Indonesia dalam periode tahun 2024-2025. Variabel utama dalam dataset meliputi:
library(readxl)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.1 ✔ stringr 1.5.2
## ✔ ggplot2 4.0.0 ✔ tibble 3.3.0
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.1.0
## ── 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
library(ggplot2)
data_wisatawan <- read_excel("C:/Users/Lenovo IP Slim 3/Downloads/Query Builder Result - Minggu, 01 Maret 2026 pukul 00.51.12 WIB.xlsx", skip = 2)
## New names:
## • `` -> `...1`
## • `Januari` -> `Januari...2`
## • `Februari` -> `Februari...3`
## • `Maret` -> `Maret...4`
## • `April` -> `April...5`
## • `Mei` -> `Mei...6`
## • `Juni` -> `Juni...7`
## • `Juli` -> `Juli...8`
## • `Agustus` -> `Agustus...9`
## • `September` -> `September...10`
## • `Oktober` -> `Oktober...11`
## • `November` -> `November...12`
## • `Desember` -> `Desember...13`
## • `Tahunan` -> `Tahunan...14`
## • `Januari` -> `Januari...15`
## • `Februari` -> `Februari...16`
## • `Maret` -> `Maret...17`
## • `April` -> `April...18`
## • `Mei` -> `Mei...19`
## • `Juni` -> `Juni...20`
## • `Juli` -> `Juli...21`
## • `Agustus` -> `Agustus...22`
## • `September` -> `September...23`
## • `Oktober` -> `Oktober...24`
## • `November` -> `November...25`
## • `Desember` -> `Desember...26`
## • `Tahunan` -> `Tahunan...27`
### Pre Processing Data
names(data_wisatawan)
## [1] "...1" "Januari...2" "Februari...3" "Maret...4"
## [5] "April...5" "Mei...6" "Juni...7" "Juli...8"
## [9] "Agustus...9" "September...10" "Oktober...11" "November...12"
## [13] "Desember...13" "Tahunan...14" "Januari...15" "Februari...16"
## [17] "Maret...17" "April...18" "Mei...19" "Juni...20"
## [21] "Juli...21" "Agustus...22" "September...23" "Oktober...24"
## [25] "November...25" "Desember...26" "Tahunan...27"
names(data_wisatawan)[1] <- "Provinsi"
data_wisatawanclean <- data_wisatawan %>%
filter(!is.na(Provinsi))
head(data_wisatawanclean)
## # A tibble: 6 × 27
## Provinsi Januari...2 Februari...3 Maret...4 April...5 Mei...6 Juni...7
## <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 ACEH 1081919 988563 977399 1312395 1056737 1121373
## 2 SUMATERA UTARA 3934845 3404211 3151675 3460417 3441857 3372608
## 3 SUMATERA BARAT 1626935 1610621 1266491 1420310 1280094 1529458
## 4 RIAU 1735350 1587588 1496958 2080509 1568369 1552621
## 5 JAMBI 741052 675155 649798 954987 704969 719358
## 6 SUMATERA SELATAN 1580053 1398899 1350139 1869157 1438593 1470817
## # ℹ 20 more variables: Juli...8 <dbl>, Agustus...9 <dbl>, September...10 <dbl>,
## # Oktober...11 <dbl>, November...12 <dbl>, Desember...13 <dbl>,
## # Tahunan...14 <dbl>, Januari...15 <dbl>, Februari...16 <dbl>,
## # Maret...17 <dbl>, April...18 <dbl>, Mei...19 <dbl>, Juni...20 <dbl>,
## # Juli...21 <dbl>, Agustus...22 <dbl>, September...23 <dbl>,
## # Oktober...24 <dbl>, November...25 <dbl>, Desember...26 <dbl>,
## # Tahunan...27 <dbl>
data_wisatawanclean[-1] <- lapply(data_wisatawanclean[-1], as.numeric)
## Warning in lapply(data_wisatawanclean[-1], as.numeric): NAs introduced by
## coercion
data_wisatawanclean <- data_wisatawanclean %>%
filter(!Provinsi %in% c("INDONESIA", "Catatan"))
data_2024 <- data_wisatawanclean[, c(1,2:13)]
data_2024_long <- data_2024 %>%
pivot_longer(
cols = -Provinsi,
names_to = "Bulan",
values_to = "Jumlah"
)
data_2024_long$Tahun <- "2024"
data_2025 <- data_wisatawanclean[, c(1,15:26)]
data_2025_long <- data_2025 %>%
pivot_longer(
cols = -Provinsi,
names_to = "Bulan",
values_to = "Jumlah"
)
data_2025_long$Tahun <- "2025"
data_long <- bind_rows(data_2024_long, data_2025_long)
head(data_long)
## # A tibble: 6 × 4
## Provinsi Bulan Jumlah Tahun
## <chr> <chr> <dbl> <chr>
## 1 ACEH Januari...2 1081919 2024
## 2 ACEH Februari...3 988563 2024
## 3 ACEH Maret...4 977399 2024
## 4 ACEH April...5 1312395 2024
## 5 ACEH Mei...6 1056737 2024
## 6 ACEH Juni...7 1121373 2024
str(data_long)
## tibble [912 × 4] (S3: tbl_df/tbl/data.frame)
## $ Provinsi: chr [1:912] "ACEH" "ACEH" "ACEH" "ACEH" ...
## $ Bulan : chr [1:912] "Januari...2" "Februari...3" "Maret...4" "April...5" ...
## $ Jumlah : num [1:912] 1081919 988563 977399 1312395 1056737 ...
## $ Tahun : chr [1:912] "2024" "2024" "2024" "2024" ...
view(data_long)
### Data Top 10 Provinsi
top10 <- aggregate(Jumlah ~ Provinsi, data_long, sum)
top10 <- top10[order(top10$Jumlah, decreasing = TRUE), ]
top10 <- head(top10, 10)
data_top10 <- subset(data_long, Provinsi %in% top10$Provinsi)
ggplot(data_long, aes(x = Tahun, y = Jumlah,
color = Provinsi, size = Jumlah)) +
geom_point(position = position_jitter(width = 0.1), alpha = 0.7) +
labs(title = "Jumlah Perjalanan Wisatawan Nusantara per Asal Provinsi",
x = "Tahun",
y = "Jumlah Perjalanan") +
scale_y_log10()
theme_minimal()
## <theme> List of 144
## $ line : <ggplot2::element_line>
## ..@ colour : chr "black"
## ..@ linewidth : num 0.5
## ..@ linetype : num 1
## ..@ lineend : chr "butt"
## ..@ linejoin : chr "round"
## ..@ arrow : logi FALSE
## ..@ arrow.fill : chr "black"
## ..@ inherit.blank: logi TRUE
## $ rect : <ggplot2::element_rect>
## ..@ fill : chr "white"
## ..@ colour : chr "black"
## ..@ linewidth : num 0.5
## ..@ linetype : num 1
## ..@ linejoin : chr "round"
## ..@ inherit.blank: logi TRUE
## $ text : <ggplot2::element_text>
## ..@ family : chr ""
## ..@ face : chr "plain"
## ..@ italic : chr NA
## ..@ fontweight : num NA
## ..@ fontwidth : num NA
## ..@ colour : chr "black"
## ..@ size : num 11
## ..@ hjust : num 0.5
## ..@ vjust : num 0.5
## ..@ angle : num 0
## ..@ lineheight : num 0.9
## ..@ margin : <ggplot2::margin> num [1:4] 0 0 0 0
## ..@ debug : logi FALSE
## ..@ inherit.blank: logi TRUE
## $ title : <ggplot2::element_text>
## ..@ family : NULL
## ..@ face : NULL
## ..@ italic : chr NA
## ..@ fontweight : num NA
## ..@ fontwidth : num NA
## ..@ colour : NULL
## ..@ size : NULL
## ..@ hjust : NULL
## ..@ vjust : NULL
## ..@ angle : NULL
## ..@ lineheight : NULL
## ..@ margin : NULL
## ..@ debug : NULL
## ..@ inherit.blank: logi TRUE
## $ point : <ggplot2::element_point>
## ..@ colour : chr "black"
## ..@ shape : num 19
## ..@ size : num 1.5
## ..@ fill : chr "white"
## ..@ stroke : num 0.5
## ..@ inherit.blank: logi TRUE
## $ polygon : <ggplot2::element_polygon>
## ..@ fill : chr "white"
## ..@ colour : chr "black"
## ..@ linewidth : num 0.5
## ..@ linetype : num 1
## ..@ linejoin : chr "round"
## ..@ inherit.blank: logi TRUE
## $ geom : <ggplot2::element_geom>
## ..@ ink : chr "black"
## ..@ paper : chr "white"
## ..@ accent : chr "#3366FF"
## ..@ linewidth : num 0.5
## ..@ borderwidth: num 0.5
## ..@ linetype : int 1
## ..@ bordertype : int 1
## ..@ family : chr ""
## ..@ fontsize : num 3.87
## ..@ pointsize : num 1.5
## ..@ pointshape : num 19
## ..@ colour : NULL
## ..@ fill : NULL
## $ spacing : 'simpleUnit' num 5.5points
## ..- attr(*, "unit")= int 8
## $ margins : <ggplot2::margin> num [1:4] 5.5 5.5 5.5 5.5
## $ aspect.ratio : NULL
## $ axis.title : NULL
## $ axis.title.x : <ggplot2::element_text>
## ..@ family : NULL
## ..@ face : NULL
## ..@ italic : chr NA
## ..@ fontweight : num NA
## ..@ fontwidth : num NA
## ..@ colour : NULL
## ..@ size : NULL
## ..@ hjust : NULL
## ..@ vjust : num 1
## ..@ angle : NULL
## ..@ lineheight : NULL
## ..@ margin : <ggplot2::margin> num [1:4] 2.75 0 0 0
## ..@ debug : NULL
## ..@ inherit.blank: logi TRUE
## $ axis.title.x.top : <ggplot2::element_text>
## ..@ family : NULL
## ..@ face : NULL
## ..@ italic : chr NA
## ..@ fontweight : num NA
## ..@ fontwidth : num NA
## ..@ colour : NULL
## ..@ size : NULL
## ..@ hjust : NULL
## ..@ vjust : num 0
## ..@ angle : NULL
## ..@ lineheight : NULL
## ..@ margin : <ggplot2::margin> num [1:4] 0 0 2.75 0
## ..@ debug : NULL
## ..@ inherit.blank: logi TRUE
## $ axis.title.x.bottom : NULL
## $ axis.title.y : <ggplot2::element_text>
## ..@ family : NULL
## ..@ face : NULL
## ..@ italic : chr NA
## ..@ fontweight : num NA
## ..@ fontwidth : num NA
## ..@ colour : NULL
## ..@ size : NULL
## ..@ hjust : NULL
## ..@ vjust : num 1
## ..@ angle : num 90
## ..@ lineheight : NULL
## ..@ margin : <ggplot2::margin> num [1:4] 0 2.75 0 0
## ..@ debug : NULL
## ..@ inherit.blank: logi TRUE
## $ axis.title.y.left : NULL
## $ axis.title.y.right : <ggplot2::element_text>
## ..@ family : NULL
## ..@ face : NULL
## ..@ italic : chr NA
## ..@ fontweight : num NA
## ..@ fontwidth : num NA
## ..@ colour : NULL
## ..@ size : NULL
## ..@ hjust : NULL
## ..@ vjust : num 1
## ..@ angle : num -90
## ..@ lineheight : NULL
## ..@ margin : <ggplot2::margin> num [1:4] 0 0 0 2.75
## ..@ debug : NULL
## ..@ inherit.blank: logi TRUE
## $ axis.text : <ggplot2::element_text>
## ..@ family : NULL
## ..@ face : NULL
## ..@ italic : chr NA
## ..@ fontweight : num NA
## ..@ fontwidth : num NA
## ..@ colour : chr "#4D4D4DFF"
## ..@ size : 'rel' num 0.8
## ..@ hjust : NULL
## ..@ vjust : NULL
## ..@ angle : NULL
## ..@ lineheight : NULL
## ..@ margin : NULL
## ..@ debug : NULL
## ..@ inherit.blank: logi TRUE
## $ axis.text.x : <ggplot2::element_text>
## ..@ family : NULL
## ..@ face : NULL
## ..@ italic : chr NA
## ..@ fontweight : num NA
## ..@ fontwidth : num NA
## ..@ colour : NULL
## ..@ size : NULL
## ..@ hjust : NULL
## ..@ vjust : num 1
## ..@ angle : NULL
## ..@ lineheight : NULL
## ..@ margin : <ggplot2::margin> num [1:4] 2.2 0 0 0
## ..@ debug : NULL
## ..@ inherit.blank: logi TRUE
## $ axis.text.x.top : <ggplot2::element_text>
## ..@ family : NULL
## ..@ face : NULL
## ..@ italic : chr NA
## ..@ fontweight : num NA
## ..@ fontwidth : num NA
## ..@ colour : NULL
## ..@ size : NULL
## ..@ hjust : NULL
## ..@ vjust : NULL
## ..@ angle : NULL
## ..@ lineheight : NULL
## ..@ margin : <ggplot2::margin> num [1:4] 0 0 4.95 0
## ..@ debug : NULL
## ..@ inherit.blank: logi TRUE
## $ axis.text.x.bottom : <ggplot2::element_text>
## ..@ family : NULL
## ..@ face : NULL
## ..@ italic : chr NA
## ..@ fontweight : num NA
## ..@ fontwidth : num NA
## ..@ colour : NULL
## ..@ size : NULL
## ..@ hjust : NULL
## ..@ vjust : NULL
## ..@ angle : NULL
## ..@ lineheight : NULL
## ..@ margin : <ggplot2::margin> num [1:4] 4.95 0 0 0
## ..@ debug : NULL
## ..@ inherit.blank: logi TRUE
## $ axis.text.y : <ggplot2::element_text>
## ..@ family : NULL
## ..@ face : NULL
## ..@ italic : chr NA
## ..@ fontweight : num NA
## ..@ fontwidth : num NA
## ..@ colour : NULL
## ..@ size : NULL
## ..@ hjust : num 1
## ..@ vjust : NULL
## ..@ angle : NULL
## ..@ lineheight : NULL
## ..@ margin : <ggplot2::margin> num [1:4] 0 2.2 0 0
## ..@ debug : NULL
## ..@ inherit.blank: logi TRUE
## $ axis.text.y.left : <ggplot2::element_text>
## ..@ family : NULL
## ..@ face : NULL
## ..@ italic : chr NA
## ..@ fontweight : num NA
## ..@ fontwidth : num NA
## ..@ colour : NULL
## ..@ size : NULL
## ..@ hjust : NULL
## ..@ vjust : NULL
## ..@ angle : NULL
## ..@ lineheight : NULL
## ..@ margin : <ggplot2::margin> num [1:4] 0 4.95 0 0
## ..@ debug : NULL
## ..@ inherit.blank: logi TRUE
## $ axis.text.y.right : <ggplot2::element_text>
## ..@ family : NULL
## ..@ face : NULL
## ..@ italic : chr NA
## ..@ fontweight : num NA
## ..@ fontwidth : num NA
## ..@ colour : NULL
## ..@ size : NULL
## ..@ hjust : NULL
## ..@ vjust : NULL
## ..@ angle : NULL
## ..@ lineheight : NULL
## ..@ margin : <ggplot2::margin> num [1:4] 0 0 0 4.95
## ..@ debug : NULL
## ..@ inherit.blank: logi TRUE
## $ axis.text.theta : NULL
## $ axis.text.r : <ggplot2::element_text>
## ..@ family : NULL
## ..@ face : NULL
## ..@ italic : chr NA
## ..@ fontweight : num NA
## ..@ fontwidth : num NA
## ..@ colour : NULL
## ..@ size : NULL
## ..@ hjust : num 0.5
## ..@ vjust : NULL
## ..@ angle : NULL
## ..@ lineheight : NULL
## ..@ margin : <ggplot2::margin> num [1:4] 0 2.2 0 2.2
## ..@ debug : NULL
## ..@ inherit.blank: logi TRUE
## $ axis.ticks : <ggplot2::element_blank>
## $ axis.ticks.x : NULL
## $ axis.ticks.x.top : NULL
## $ axis.ticks.x.bottom : NULL
## $ axis.ticks.y : NULL
## $ axis.ticks.y.left : NULL
## $ axis.ticks.y.right : NULL
## $ axis.ticks.theta : NULL
## $ axis.ticks.r : NULL
## $ axis.minor.ticks.x.top : NULL
## $ axis.minor.ticks.x.bottom : NULL
## $ axis.minor.ticks.y.left : NULL
## $ axis.minor.ticks.y.right : NULL
## $ axis.minor.ticks.theta : NULL
## $ axis.minor.ticks.r : NULL
## $ axis.ticks.length : 'rel' num 0.5
## $ axis.ticks.length.x : NULL
## $ axis.ticks.length.x.top : NULL
## $ axis.ticks.length.x.bottom : NULL
## $ axis.ticks.length.y : NULL
## $ axis.ticks.length.y.left : NULL
## $ axis.ticks.length.y.right : NULL
## $ axis.ticks.length.theta : NULL
## $ axis.ticks.length.r : NULL
## $ axis.minor.ticks.length : 'rel' num 0.75
## $ axis.minor.ticks.length.x : NULL
## $ axis.minor.ticks.length.x.top : NULL
## $ axis.minor.ticks.length.x.bottom: NULL
## $ axis.minor.ticks.length.y : NULL
## $ axis.minor.ticks.length.y.left : NULL
## $ axis.minor.ticks.length.y.right : NULL
## $ axis.minor.ticks.length.theta : NULL
## $ axis.minor.ticks.length.r : NULL
## $ axis.line : <ggplot2::element_blank>
## $ axis.line.x : NULL
## $ axis.line.x.top : NULL
## $ axis.line.x.bottom : NULL
## $ axis.line.y : NULL
## $ axis.line.y.left : NULL
## $ axis.line.y.right : NULL
## $ axis.line.theta : NULL
## $ axis.line.r : NULL
## $ legend.background : <ggplot2::element_blank>
## $ legend.margin : NULL
## $ legend.spacing : 'rel' num 2
## $ legend.spacing.x : NULL
## $ legend.spacing.y : NULL
## $ legend.key : <ggplot2::element_blank>
## $ legend.key.size : 'simpleUnit' num 1.2lines
## ..- attr(*, "unit")= int 3
## $ legend.key.height : NULL
## $ legend.key.width : NULL
## $ legend.key.spacing : NULL
## $ legend.key.spacing.x : NULL
## $ legend.key.spacing.y : NULL
## $ legend.key.justification : NULL
## $ legend.frame : NULL
## $ legend.ticks : NULL
## $ legend.ticks.length : 'rel' num 0.2
## $ legend.axis.line : NULL
## $ legend.text : <ggplot2::element_text>
## ..@ family : NULL
## ..@ face : NULL
## ..@ italic : chr NA
## ..@ fontweight : num NA
## ..@ fontwidth : num NA
## ..@ colour : NULL
## ..@ size : 'rel' num 0.8
## ..@ hjust : NULL
## ..@ vjust : NULL
## ..@ angle : NULL
## ..@ lineheight : NULL
## ..@ margin : NULL
## ..@ debug : NULL
## ..@ inherit.blank: logi TRUE
## $ legend.text.position : NULL
## $ legend.title : <ggplot2::element_text>
## ..@ family : NULL
## ..@ face : NULL
## ..@ italic : chr NA
## ..@ fontweight : num NA
## ..@ fontwidth : num NA
## ..@ colour : NULL
## ..@ size : NULL
## ..@ hjust : num 0
## ..@ vjust : NULL
## ..@ angle : NULL
## ..@ lineheight : NULL
## ..@ margin : NULL
## ..@ debug : NULL
## ..@ inherit.blank: logi TRUE
## $ legend.title.position : NULL
## $ legend.position : chr "right"
## $ legend.position.inside : NULL
## $ legend.direction : NULL
## $ legend.byrow : NULL
## $ legend.justification : chr "center"
## $ legend.justification.top : NULL
## $ legend.justification.bottom : NULL
## $ legend.justification.left : NULL
## $ legend.justification.right : NULL
## $ legend.justification.inside : NULL
## [list output truncated]
## @ complete: logi TRUE
## @ validate: logi TRUE
Visualisasi menggunakan geom_point menampilkan jumlah perjalanan wisatawan nusantara menurut provinsi asal tahun 2024-2025 dalam bentuk titik. Setiap titik merpresentasikan satu provinsi pada tahun tertentu, dengan sumbu vertikal menunjukkan besarnya jumlah perjalanan yang sudah di scale. Pada grafik ini terlihat bahwa sebaran titik sangat bervariasi, menunjukkan perbedaan yang signifikan dalam jumlah perjalanan antar provinsi. Terlihat bahwa provinsi provinsi yang berada di pulau jawa endominasi jumlah perjalanan wisatawan, dengan nilai yang jauh lebih tinggi dibandingkan provinsi lainnya. Sementara itu, sebagian besar provinsi memiliki jumlah perjalanan yang relatif lebih rendah, menunjukkan adanya ketimpangan mobilitas wisata domestik antar wilayah. Selain itu, perbandingan posisi titik antara tahun 2024 dan 2025 menunjukkan bahwa sebagian besar provinsi mengalami peningkatan jumlah perjalanan, diamana titik pada tahun 2025 cenderung berada lebih tinggi daripada tahun 2024.
Karna data ini mempunyai banyak kategori, maka visualisasi ini terlihat padat, sehingga grafik yang menggunaka function geom_point pada data ini lebih efektif untuk melihat pola global dan kecenderungan umum, bukan perbandingan detail tiap provinsi.
ggplot(data_top10,
aes(x = Provinsi, y = Jumlah, fill = Provinsi)) +
geom_bar(stat = "identity") +
facet_wrap(~ Tahun, ncol = 2) +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 90, vjust = 0.5),
legend.position = "none"
) +
labs(
title = "Jumlah Perjalanan Wisatawan Nusantara Menurut Provinsi Asal",
subtitle = "Perbandingan Tahun 2024 dan 2025",
x = "Provinsi",
y = "Jumlah Perjalanan"
)
Visualisasi menggunakan geom_bar menampilkan jumlah perjalanan wisatawan nusantara menurut provinsi asal dalam bentuk batang menurut 10 provinsi dengan total perjalanan tertinggi, sehingga memudahkan perbandingan kuantitatif antar provinsi. Setiap batang mrepresentasikan total jumlah perjalanan dari suatu provinsi pada tahun tertentu, dengan tinggi batang menunjukkan besarnya nilai perjalanan wisatawan. Berdasarkan grafik batang, terlihat dengan jelas adanya ketimpangan jumlah perjalanan antar provinsi, dimana provinsi provinsi yang berada di pulau jawa memiliki bentuk batang yang tinggi dibandingkan bentuk batang provinsi lainya. Hal ini menunjukkan bahwa kontribusi perjalanan wisatawan nusantara tidak tersebar merata di seluruh wilayah. Jika dibandingkan antara tahun 2024 dan 2025, pola distribusi antar provinsi relatif konsisten, namun tinggi batang pada tahun 2025 cenderung lebih tinggi, yang mengindikasikan peningkatan jumlah perjalanan wisatawan di sebagian besar provinsi.
Secara keseluruhan, function geom_bar pada data ini efektif digunakan untuk menonjolkan perbandingan dan perbedaan antar provinsi dan perubahan antar waktu, serta memberikan gambaran kontribusi masing-masing provinsi terhadap total perjalanan wisatawan nusantara. Pemilihan Top 10 provinsi dilakukan untuk meningkatkan keterbacaan visualisasi, karna banyaknya jumlah provinsi dapat menyebabkan grafik menjadi terlalu padat dan sulit diinterpretasikan. Dengan membatasi analisis pada provinsi dengan kontribusi terbesar, perbedaan antar provinsi serta pola distribusi jumlah perjalanan dapat diamati dengan lebih jelas.
ggplot(data_top10,
aes(x = Tahun,
y = Jumlah,
group = Provinsi,
color = Provinsi)) +
geom_line(alpha = 0.4) +
geom_point(size = 1) +
theme_minimal() +
theme(legend.position = "none") +
labs(
title = "Perubahan Jumlah Perjalanan Wisatawan Nusantara",
subtitle = "Menurut Provinsi Asal Tahun 2024–2025",
x = "Tahun",
y = "Jumlah Perjalanan"
)
Visualisasi menggunakan geom_line menunjukkan perubahan jumlah
perjalanan wisatawan nusantara menurut provinsi asal pada 10 provinsi
dengan total perjalanan tertinggi periode tahun 2024-2025. Pembatasan
analisis pada Top 10 provinsi dilakukan untuk meningkatkan keterbacaan
visualisasi, mengingat banyaknya jumlah provinsi dapat menyebabkan garis
saling bertumpuk dan menyulitkan interpretasi pola perubahan data.
Terlihat pada grafik, sebagian besar garis terlihat relatif lurus dan mendatar, yang mengindikasikan bahwa jumlah perjalanan wisatawan pada sebagian besar provinsi dalam kelompok Top 10 relatif stabil. Hanya ada sebagian provinsi yang menunjukan peningkatan jumlah perjalanan, yang ditandai dengan garis yang cenderung naik dari tahun 2024 ke 2025. Kondisi ini menunjukkan bahwa pertumbuhan aktivitas perjalanan wisatawan nusantara tidak terjadi secara merata bahkan di antara provinsi dengan jumlah perjalanan tertinggi. Peningkatan yang lebih jelas hanya terjadi pada provinsi tertentu, sementara provinsi lainnya cenderung mengalami perubahan yang kecil. Bentuk garis yang lurus juga dipengaruhi oleh keterbatasan jumlah titik waktu, di mana data hanya tersedia untuk dua tahun pengamatan. Dengan jumlah titik waktu yang terbatas, geom_line hanya menghubungkan dua nilai sehingga perubahan yang kecil tampak sebagai garis konstan.
ggplot(data_long, aes(x = Tahun, y = Jumlah, fill = Tahun)) +
geom_boxplot(alpha = 0.8) +
theme_minimal() +
labs (
title = "Jumlah Perjalanan Wisatawan Nusantara Menurut Provinsi Asal",
subtitle = "Perbandingan Sebaran Tahun 2024 dan 2025"
)
Visualisasi menggunakan geom_boxplot menampilkan sebaran jumlah
perjalanan wisatawan nusantara berdasarkan tahun pengamatan, yaitu 2024
dan 2025. Boxplot digunakan untuk menggambarkan distribusi data secara
ringkas melalui nilai median, kuartil, serta pencilan (outlier).
Berdasarkan boxplot, terlihat bahwa median jumlah perjalanan pada tahun
2025 lebih tinggi dibandingkan tahun 2024, yang menunjukkan adanya
peningkatan jumlah perjalanan wisatawan nusantara secara umum. Rentang
antar titik kuartil pada tahun 2025 juga cenderung lebih lebar,
menandakan bahwa variasi jumlah perjalanan antar provinsi pada tahun
2025 lebih besar dibandingkan tahun sebelumnya. Terdapat outlier pada
kedua tahun menunjukkan adanya beberapa provinsi dengan jumlah
perjalanan yang jauh lebih tinggi dibandingkan provinsi lainnya. Hal ini
mengindikasikan bahwa distribusi jumlah perjalanan wisatawan nusantara
bersifat tidak merata dan didominasi oleh sejumlah kecil provinsi dengan
nilai ekstrem.
Secara keseluruhan, function geom_boxplot efektif digunakan untuk membandingkan pusat data (median), tingkat variasi, serta ketimpangan distribusi jumlah perjalanan wisatawan nusantara antara tahun 2024 dan 2025.
ggplot(data_top10,
aes(x = Tahun,
y = Jumlah,
fill = Provinsi,
group = Provinsi)) +
geom_area(alpha = 0.8) +
theme_minimal() +
labs(
title = "Kontribusi Jumlah Perjalanan Wisatawan Nusantara",
subtitle = "Top 10 Provinsi Asal Tahun 2024–2025",
x = "Tahun",
y = "Jumlah Perjalanan",
fill = "Provinsi"
)
Visualisasi menggunakan geom_area menunjukkan kontribusi jumlah perjalanan wisatawan nusantara dari 10 provinsi dengan total perjalanan terbesar pada periode tahun 2024–2025. Setiap area berwarna merpresentasikan kontribusi setiap provinsi, sedangkan tinggi total area menunjukkan akumulasi jumlah perjalanan dari seluruh provinsi dalam kelompok Top 10. Berdasarkan grafik, terlihat bahwa total jumlah perjalanan wisatawan pada tahun 2025 lebih tinggi dibandingkan tahun 2024, yang mengindikasikan adanya peningkatan aktivitas perjalanan wisatawan nusantara pada periode tersebut. Meskipun demikian, pola kontribusi antar provinsi relatif konsisten, di mana beberapa provinsi tertentu memberikan kontribusi yang lebih besar dibandingkan provinsi lainnya. Provinsi dengan kontribusi terbesar, khususnya yang berada di pulau Jawa, membentuk bagian area yang paling dominan pada kedua tahun pengamatan.
Pemilihan data Top 10 provinsi bertujuan untuk meningkatkan keterbacaan visualisasi dan memudahkan interpretasi kontribusi masing-masing provinsi. Dengan pembatasan ini, geom_area efektif digunakan untuk menunjukkan perbandingan total perjalanan antar tahun serta dominasi kontribusi provinsi tertentu.