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:

  1. Provinsi sebagai variabel kategorik yang menunjukkan daerah asal wisatawan.
  2. Tahun (2024 dan 2025) sebagai variabel waktu.
  3. Jumlah perjalanan wisatawan sebagai variabel numerik yang menunjukkan total perjalanan wisata yang dilakukan.

Aesthetic Berdasarkan Tipe Variabel

Load Package

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)

Input Data

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)

Geom_Point

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.

Geom_Bar

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.

Geom_Line

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.

Geom_Boxplot

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.

Geom_Histogram

Geom_Area

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.