Basic Data Visulization
Exercises ~ Week 4
1 Pendahuluan
1.1 Tujuan
Tujuan dari analisis ini adalah untuk memahami hubungan antara jumlah penumpang bus dengan keterlambatan waktu kedatangan pada layanan transportasi publik. Dengan analisis ini, kita ingin mengetahui apakah peningkatan jumlah penumpang berpengaruh terhadap waktu tempuh aktual dan keterlambatan bus.
1.2 Deskripsi Dataset
Dataset ini berisi data operasional bus selama dua hari (1–2 Oktober 2025) dengan beberapa rute (B1, B2, B3). Setiap baris mencerminkan satu perjalanan bus dengan atribut sebagai berikut:
- Tanggal: tanggal operasi bus
- Rute: kode rute bus (B1, B2, B3)
- Jam Berangkat & Jam Tiba: waktu keberangkatan dan kedatangan aktual
- Waktu Tempuh Terjadwal: waktu tempuh yang dijadwalkan (dalam menit)
- Waktu Tempuh Aktual: waktu tempuh aktual berdasarkan realisasi di lapangan
- Keterlambatan: selisih antara waktu aktual dan jadwal (menit)
- Jumlah Penumpang: jumlah penumpang dalam satu perjalanan
- Hari: hari operasi (misalnya Rabu, Kamis)
- Periode Waktu: waktu perjalanan (Pagi, Siang, Sore)
1.3 Konteks Kasus
Data ini menggambarkan situasi nyata dalam layanan transportasi bus kota, di mana jumlah penumpang dapat memengaruhi waktu tempuh dan tingkat keterlambatan. Analisis ini penting bagi pengelola transportasi publik untuk meningkatkan efisiensi waktu, terutama pada jam sibuk (pagi dan sore). Melalui visualisasi data, kita akan melihat pola hubungan antara jumlah penumpang dan keterlambatan.
2 Persiapan Data
2.1 Tujuan
Tujuan dari analisis ini adalah untuk memahami hubungan antara jumlah penumpang bus dengan keterlambatan waktu kedatangan pada layanan transportasi publik. Dengan analisis ini, kita ingin mengetahui apakah peningkatan jumlah penumpang berpengaruh terhadap waktu tempuh aktual dan keterlambatan bus.
2.2 Deskripsi Dataset
Dataset ini berisi data operasional bus selama dua hari (1–2 Oktober 2025) dengan beberapa rute (B1, B2, B3). Setiap baris mencerminkan satu perjalanan bus dengan atribut sebagai berikut:
- Tanggal: tanggal operasi bus
- Rute: kode rute bus (B1, B2, B3)
- Jam Berangkat & Jam Tiba: waktu keberangkatan dan kedatangan aktual
- Waktu Tempuh Terjadwal: waktu tempuh yang dijadwalkan (dalam menit)
- Waktu Tempuh Aktual: waktu tempuh aktual berdasarkan realisasi di lapangan
- Keterlambatan: selisih antara waktu aktual dan jadwal (menit)
- Jumlah Penumpang: jumlah penumpang dalam satu perjalanan
- Hari: hari operasi (misalnya Rabu, Kamis)
- Periode Waktu: waktu perjalanan (Pagi, Siang, Sore)
2.3 Konteks Kasus
Data ini menggambarkan situasi nyata dalam layanan transportasi bus kota, di mana jumlah penumpang dapat memengaruhi waktu tempuh dan tingkat keterlambatan. Analisis ini penting bagi pengelola transportasi publik untuk meningkatkan efisiensi waktu, terutama pada jam sibuk (pagi dan sore). Melalui visualisasi data, kita akan melihat pola hubungan antara jumlah penumpang dan keterlambatan.
2.4 Memuat Paket yang Diperlukan
# install.packages("ggplot2") # Jalankan baris ini jika Anda belum menginstal paketnya
# install.packages("dplyr") # Jalankan baris ini jika Anda belum menginstal paketnya
library(ggplot2)
library(dplyr)##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
2.5 Membuat dataset dan membaca dataset
# 2. Membuat Data Frame
# Membuat data frame dari data yang Anda berikan
df_bus <- data.frame(
Tanggal = as.Date(c("2025-10-01", "2025-10-01", "2025-10-01", "2025-10-01", "2025-10-01", "2025-10-01", "2025-10-02", "2025-10-02", "2025-10-02", "2025-10-02")),
Rute = c("B1", "B2", "B3", "B1", "B2", "B3", "B1", "B2", "B3", "B1"),
Jam_Berangkat = c("06:30", "07:00", "08:15", "12:00", "13:15", "17:00", "06:30", "07:00", "17:00", "18:30"),
Jam_Tiba = c("06:55", "07:35", "08:40", "12:30", "13:45", "17:35", "06:55", "07:40", "17:40", "19:05"),
Waktu_Tempuh_Terjadwal = c(25, 30, 25, 30, 30, 35, 25, 30, 35, 35),
Waktu_Tempuh_Aktual = c(28, 40, 23, 34, 31, 45, 26, 43, 38, 37),
Keterlambatan = c(3, 10, -2, 4, 1, 10, 1, 13, 3, 2),
Jumlah_Penumpang = c(42, 58, 33, 27, 36, 65, 40, 70, 61, 54),
Hari = c("Rabu", "Rabu", "Rabu", "Rabu", "Rabu", "Rabu", "Kamis", "Kamis", "Kamis", "Kamis"),
Periode_Waktu = factor(c("Pagi", "Pagi", "Pagi", "Siang", "Siang", "Sore", "Pagi", "Pagi", "Sore", "Sore"),
levels = c("Pagi", "Siang", "Sore")) # Mengatur urutan periode
)
# Menampilkan beberapa baris pertama dari data frame
print(head(df_bus))## Tanggal Rute Jam_Berangkat Jam_Tiba Waktu_Tempuh_Terjadwal
## 1 2025-10-01 B1 06:30 06:55 25
## 2 2025-10-01 B2 07:00 07:35 30
## 3 2025-10-01 B3 08:15 08:40 25
## 4 2025-10-01 B1 12:00 12:30 30
## 5 2025-10-01 B2 13:15 13:45 30
## 6 2025-10-01 B3 17:00 17:35 35
## Waktu_Tempuh_Aktual Keterlambatan Jumlah_Penumpang Hari Periode_Waktu
## 1 28 3 42 Rabu Pagi
## 2 40 10 58 Rabu Pagi
## 3 23 -2 33 Rabu Pagi
## 4 34 4 27 Rabu Siang
## 5 31 1 36 Rabu Siang
## 6 45 10 65 Rabu Sore
3 Visualisasi
3.1 Bar Chart
# Perbandingan Rata-rata Keterlambatan per Rute
# Menggunakan bar chart untuk membandingkan performa setiap rute
ggplot(df_bus, aes(x = Rute, y = Keterlambatan, fill = Rute)) +
geom_bar(stat = "summary", fun = "mean") + # 'summary' & 'mean' untuk menghitung rata-rata
geom_text(stat = 'summary', fun = mean, aes(label = round(after_stat(y), 2)), vjust = -0.5) + # Menambah label rata-rata
labs(
title = "Rata-rata Keterlambatan Berdasarkan Rute Bus",
x = "Rute Bus",
y = "Rata-rata Keterlambatan (menit)"
) +
theme_minimal() +
theme(legend.position = "none") # Menyembunyikan legenda karena warna sudah jelas3.1.1 Defenisi
Kode ini adalah perintah dalam bahasa R yang menggunakan pustaka ggplot2 untuk membuat sebuah bar chart ringkasan (summary bar chart). Berbeda dengan bar chart standar yang biasanya menghitung frekuensi (jumlah kemunculan) setiap kategori, kode ini melakukan hal berikut:
- Mengelompokkan data berdasarkan variabel pada sumbu-x (Rute).
- Untuk setiap kelompok (setiap rute), kode ini menghitung nilai rata-rata (mean) dari variabel pada sumbu-y (Keterlambatan).
- Tinggi setiap bar merepresentasikan hasil perhitungan rata-rata tersebut, bukan jumlah data.
- Menambahkan label teks di atas setiap bar untuk menunjukkan nilai rata-rata yang pasti.
3.1.2 Aturan Penggunaan
- Membandingkan Metrik Agregat Antar Kategori: Tujuan
utamanya adalah untuk membandingkan sebuah nilai ringkasan (seperti
rata-rata, total, median, atau standar deviasi) dari variabel numerik
pada beberapa grup atau kategori yang berbeda.
- Variabel X (Sumbu-X): Harus berupa variabel kategorikal atau diskrit (contoh: Rute, Hari, Periode_Waktu).
- Variabel Y (Sumbu-Y): Harus berupa variabel numerik atau kontinu yang nilainya bisa dihitung statistiknya (contoh: Keterlambatan, Jumlah_Penumpang, Harga_Tiket).
- Menyoroti Performa Terbaik atau Terburuk: Dengan cepat menunjukkan kategori mana yang memiliki nilai tertinggi atau terendah. Dalam konteks ini, rute mana yang paling sering terlambat (rata-rata tertinggi) atau paling tepat waktu.
- Menyajikan Laporan Ringkas kepada Audiens Non-Teknis: Bar chart sangat intuitif dan mudah dipahami oleh siapa saja, menjadikannya pilihan yang sangat baik untuk presentasi atau laporan bisnis.
3.1.3 Kelebihan 👍
- Sangat Intuitif dan Mudah Dibaca: Perbandingan tinggi bar adalah cara yang sangat alami bagi manusia untuk membandingkan nilai. Secara instan, audiens bisa melihat rute mana yang memiliki rata-rata keterlambatan tertinggi.
- Fokus pada Ringkasan: Kode ini menyederhanakan puluhan atau ratusan titik data menjadi satu angka ringkasan (rata-rata) per kategori. Ini membantu menghilangkan “noise” dan langsung menuju ke inti pesan.
- Efektif untuk Perbandingan Langsung: Dengan menempatkan bar bersebelahan, perbandingan antar rute menjadi sangat mudah dan jelas.
- Informatif: Penggunaan geom_text untuk menambahkan label nilai di atas bar membuat grafik tidak hanya visual tetapi juga presisi. Audiens tidak perlu menebak-nebak nilai pasti dari setiap bar.
- Estetika yang Jelas: Penggunaan fill = Rute memberikan warna yang berbeda untuk setiap bar, yang secara visual memisahkan kategori dengan baik, meskipun dalam kasus ini sumbu-x sudah cukup jelas.
3.1.4 Kekurangan 👎
- Menyembunyikan Distribusi Data: Ini adalah
kekurangan terbesar. Rata-rata bisa menipu. Dua rute bisa memiliki
rata-rata keterlambatan yang sama, namun distribusinya sangat berbeda
- Contoh:
- Rute A: Selalu terlambat sekitar 5 menit setiap hari. (Variansi rendah).
- Rute B: Setengah perjalanan sangat tepat waktu (0 menit terlambat), tetapi setengahnya lagi terlambat parah 10 menit. (Variansi tinggi).
- Keduanya memiliki rata-rata keterlambatan 5 menit, tetapi pengalaman penumpang di kedua rute tersebut sangat berbeda. Bar chart ini tidak akan menunjukkan perbedaan ini.
- Contoh:
- Rentan terhadap Outlier (Pencilan): Nilai rata-rata (mean) sangat sensitif terhadap nilai ekstrem. Jika ada satu perjalanan di sebuah rute yang terlambat sangat parah (misalnya, 60 menit karena ada insiden), itu akan menaikkan rata-rata keterlambatan rute tersebut secara signifikan, meskipun sebagian besar perjalanannya tepat waktu.
- Tidak Menampilkan Jumlah Sampel: Grafik ini tidak memberitahu kita berapa banyak perjalanan yang digunakan untuk menghitung setiap rata-rata. Rata-rata dari 100 perjalanan jauh lebih dapat diandalkan daripada rata-rata dari 3 perjalanan.
- Kurang Cocok untuk Data Runtun Waktu (Time Series): Jika Anda ingin melihat bagaimana keterlambatan berubah dari jam ke jam atau dari hari ke hari, bar chart antar kategori bukanlah pilihan terbaik. Grafik garis (line chart) akan lebih cocok.
# 1. Memuat library (dplyr diperlukan untuk manipulasi data)
# Jika belum punya, jalankan: install.packages("dplyr")
library(dplyr)
# 2. Membuat data frame dari data yang Anda berikan
data_perjalanan <- data.frame(
Tanggal = as.Date(c("2025-10-01", "2025-10-01", "2025-10-01", "2025-10-01", "2025-10-01", "2025-10-01", "2025-10-02", "2025-10-02", "2025-10-02", "2025-10-02")),
Rute = c("B1", "B2", "B3", "B1", "B2", "B3", "B1", "B2", "B3", "B1"),
Jumlah_Penumpang = c(42, 58, 33, 27, 36, 65, 40, 70, 61, 54)
# Kolom lain bisa ditambahkan jika perlu, tapi ini yang dibutuhkan untuk chart
)
# 3. Menghitung total penumpang untuk setiap rute
penumpang_per_rute <- data_perjalanan %>%
group_by(Rute) %>%
summarise(Total_Penumpang = sum(Jumlah_Penumpang))
# 4. Membuat bar chart dengan R dasar (base R)
barplot(height = penumpang_per_rute$Total_Penumpang,
names.arg = penumpang_per_rute$Rute,
main = "Total Jumlah Penumpang per Rute",
xlab = "Rute Perjalanan",
ylab = "Total Jumlah Penumpang",
col = c("coral", "steelblue", "darkseagreen"),
ylim = c(0, 200) # Atur batas sumbu Y agar ada ruang di atas bar
)
# Menambahkan label nilai di atas setiap bar
text(x = barplot(penumpang_per_rute$Total_Penumpang, plot = FALSE),
y = penumpang_per_rute$Total_Penumpang + 5, # Posisi label sedikit di atas bar
labels = penumpang_per_rute$Total_Penumpang)3.2 Histogram
# Membuat Data Frame
# Membuat data frame dari data yang Anda berikan
data_perjalanan <- data.frame(
Tanggal = as.Date(c("2025-10-01", "2025-10-01", "2025-10-01", "2025-10-01", "2025-10-01", "2025-10-01", "2025-10-02", "2025-10-02", "2025-10-02", "2025-10-02")),
Rute = c("B1", "B2", "B3", "B1", "B2", "B3", "B1", "B2", "B3", "B1"),
Jam_Berangkat = c("06:30", "07:00", "08:15", "12:00", "13:15", "17:00", "06:30", "07:00", "17:00", "18:30"),
Jam_Tiba = c("06:55", "07:35", "08:40", "12:30", "13:45", "17:35", "06:55", "07:40", "17:40", "19:05"),
Waktu_Tempuh_Terjadwal = c(25, 30, 25, 30, 30, 35, 25, 30, 35, 35),
Waktu_Tempuh_Aktual = c(28, 40, 23, 34, 31, 45, 26, 43, 38, 37),
Keterlambatan = c(3, 10, -2, 4, 1, 10, 1, 13, 3, 2),
Jumlah_Penumpang = c(42, 58, 33, 27, 36, 65, 40, 70, 61, 54),
Hari = c("Rabu", "Rabu", "Rabu", "Rabu", "Rabu", "Rabu", "Kamis", "Kamis", "Kamis", "Kamis"),
Periode_Waktu = factor(c("Pagi", "Pagi", "Pagi", "Siang", "Siang", "Sore", "Pagi", "Pagi", "Sore", "Sore"),
levels = c("Pagi", "Siang", "Sore")) # Mengatur urutan periode
)
# Menampilkan beberapa baris pertama dari data frame
print(head(df_bus))## Tanggal Rute Jam_Berangkat Jam_Tiba Waktu_Tempuh_Terjadwal
## 1 2025-10-01 B1 06:30 06:55 25
## 2 2025-10-01 B2 07:00 07:35 30
## 3 2025-10-01 B3 08:15 08:40 25
## 4 2025-10-01 B1 12:00 12:30 30
## 5 2025-10-01 B2 13:15 13:45 30
## 6 2025-10-01 B3 17:00 17:35 35
## Waktu_Tempuh_Aktual Keterlambatan Jumlah_Penumpang Hari Periode_Waktu
## 1 28 3 42 Rabu Pagi
## 2 40 10 58 Rabu Pagi
## 3 23 -2 33 Rabu Pagi
## 4 34 4 27 Rabu Siang
## 5 31 1 36 Rabu Siang
## 6 45 10 65 Rabu Sore
# Membuat histogram dari kolom Jumlah_Penumpang
hist(data_perjalanan$Jumlah_Penumpang,
main = "Histogram Distribusi Jumlah Penumpang", # Judul utama grafik
xlab = "Jumlah Penumpang", # Label untuk sumbu X
ylab = "Frekuensi", # Label untuk sumbu Y
col = "skyblue", # Warna bar
border = "black", # Warna garis tepi bar
breaks = 5 # Jumlah "bins" atau kelompok data
)3.2.1 Defenisi
Histogram adalah representasi grafis dari distribusi data numerik. Grafik ini menyajikan data dalam bentuk batang-batang vertikal di mana setiap batang mewakili frekuensi (jumlah kemunculan) data dalam interval atau rentang nilai tertentu. Berbeda dengan diagram batang (bar chart), batang-batang pada histogram saling bersentuhan untuk menunjukkan bahwa data bersifat kontinu.
3.2.2 Aturan Penggunaan
- Data Kontinu: Histogram paling baik digunakan untuk data numerik yang bersifat kontinu atau data diskrit dengan rentang nilai yang sangat besar (misalnya, tinggi badan, berat badan, suhu, atau jumlah penumpang dalam kasus Anda).
- Sumbu X dan Y:
- Sumbu X (horizontal) merepresentasikan rentang nilai data yang dibagi menjadi beberapa interval atau “bins”. Semua “bins” ini harus memiliki lebar yang sama.
- Sumbu Y (vertikal) merepresentasikan frekuensi atau jumlah data yang jatuh ke dalam setiap “bin”.
- Batang Saling Bersentuhan: Batang-batang pada histogram harus saling menempel untuk menandakan bahwa data pada sumbu X bersifat berkelanjutan.
- Pemilihan “Bins”: Jumlah dan lebar “bins” sangat penting. Terlalu sedikit “bins” akan menyembunyikan detail distribusi, sedangkan terlalu banyak “bins” dapat membuat grafik terlihat “berisik” dan sulit diinterpretasikan.
3.2.3 Kelebihan 👍
- Visualisasi Distribusi: Dengan cepat menunjukkan bentuk sebaran data, seperti apakah data terdistribusi normal, miring ke kiri (left-skewed), miring ke kanan (right-skewed), atau memiliki lebih dari satu puncak (multimodal).
- Identifikasi Pola: Mempermudah identifikasi pusat data (tendensi sentral), penyebaran (variabilitas), dan adanya nilai-nilai ekstrem (outliers).
- Cocok untuk Data Besar: Sangat efektif untuk merangkum dan memvisualisasikan dataset yang besar sehingga pola data lebih mudah terlihat.
- Mudah Dipahami: Konsepnya relatif sederhana dan mudah dipahami bahkan oleh audiens non-teknis.
3.2.4 Kekurangan 👎
- Sensitif Terhadap “Bins”: Tampilan histogram bisa sangat berbeda tergantung pada jumlah dan lebar “bins” yang dipilih, yang berpotensi menyebabkan interpretasi yang berbeda.
- Kehilangan Detail Individu: Tidak memungkinkan untuk melihat nilai data secara individual karena data sudah dikelompokkan ke dalam interval.
- Kurang Efektif untuk Data Kecil: Jika jumlah data terlalu sedikit, histogram mungkin tidak memberikan gambaran distribusi yang akurat.
- Sulit Membandingkan Dua Dataset: Membandingkan dua distribusi data menggunakan dua histogram yang berbeda bisa jadi sulit, terutama jika skala atau “bins” tidak sama.
3.3 Boxplot
# Membuat data frame dari data yang Anda berikan
data_perjalanan <- data.frame(
Tanggal = as.Date(c("2025-10-01", "2025-10-01", "2025-10-01", "2025-10-01", "2025-10-01", "2025-10-01", "2025-10-02", "2025-10-02", "2025-10-02", "2025-10-02")),
Rute = c("B1", "B2", "B3", "B1", "B2", "B3", "B1", "B2", "B3", "B1"),
Jam_Berangkat = c("06:30", "07:00", "08:15", "12:00", "13:15", "17:00", "06:30", "07:00", "17:00", "18:30"),
Jam_Tiba = c("06:55", "07:35", "08:40", "12:30", "13:45", "17:35", "06:55", "07:40", "17:40", "19:05"),
Waktu_Tempuh_Terjadwal = c(25, 30, 25, 30, 30, 35, 25, 30, 35, 35),
Waktu_Tempuh_Aktual = c(28, 40, 23, 34, 31, 45, 26, 43, 38, 37),
Keterlambatan = c(3, 10, -2, 4, 1, 10, 1, 13, 3, 2),
Jumlah_Penumpang = c(42, 58, 33, 27, 36, 65, 40, 70, 61, 54),
Hari = c("Rabu", "Rabu", "Rabu", "Rabu", "Rabu", "Rabu", "Kamis", "Kamis", "Kamis", "Kamis"),
Periode_Waktu = c("Pagi", "Pagi", "Pagi", "Siang", "Siang", "Sore", "Pagi", "Pagi", "Sore", "Sore")
)# Membuat boxplot untuk membandingkan Jumlah Penumpang per Periode Waktu
boxplot(Jumlah_Penumpang ~ Periode_Waktu, # Rumus: Y ~ X (Variabel Numerik ~ Variabel Kategorikal)
data = data_perjalanan,
main = "Boxplot Jumlah Penumpang berdasarkan Periode Waktu", # Judul utama
xlab = "Periode Waktu", # Label Sumbu X
ylab = "Jumlah Penumpang", # Label Sumbu Y
col = c("lightblue", "lightgreen", "lightyellow"), # Warna untuk setiap box
border = "black"
)3.3.1 Defenisi
Boxplot (atau diagram kotak garis) adalah metode grafis untuk menggambarkan sebaran data numerik melalui lima ringkasan statistik utamanya: minimum, kuartil pertama (Q1), median (Q2), kuartil ketiga (Q3), dan maksimum. Boxplot sangat efektif untuk menunjukkan tendensi sentral, sebaran (dispersi), kemiringan (skewness) data, serta mengidentifikasi nilai-nilai ekstrem (outlier).
- Median (Garis Tengah Kotak): Nilai tengah dari data (kuartil kedua atau Q2).
- Kotak (Box): Mencakup 50% data di tengah, dari kuartil pertama (Q1) hingga kuartil ketiga (Q3). Panjang kotak ini disebut Interquartile Range (IQR).
- Garis (Whiskers): Garis yang memanjang dari kotak ke nilai minimum dan maksimum dalam rentang data yang “normal” (biasanya 1.5 kali IQR dari Q1 atau Q3).
- Outlier (Titik): Nilai data yang berada di luar jangkauan whiskers, dianggap sebagai nilai ekstrem.
3.3.2 Aturan Penggunaan
- Membandingkan Distribusi: Boxplot sangat ideal untuk membandingkan distribusi variabel numerik antara beberapa kelompok atau kategori. Contohnya, membandingkan gaji antara departemen yang berbeda atau, seperti pada kode di atas, membandingkan jumlah penumpang pada periode waktu yang berbeda.
- Identifikasi Outlier: Fungsi utamanya adalah untuk dengan cepat mendeteksi adanya pencilan (outlier) dalam dataset.
- Memahami Sebaran dan Kemiringan:
- Kotak yang panjang menandakan sebaran data yang besar.
- Kotak yang pendek menandakan sebaran data yang kecil.
- Jika median tidak di tengah kotak, itu menunjukkan data yang miring (skewed).
3.3.3 Kelebihan 👍
- Ringkas dan Informatif: Merangkum beberapa statistik penting (median, kuartil, rentang, outlier) dalam satu visualisasi yang ringkas.
- fektif untuk Perbandingan: Sangat mudah untuk membandingkan distribusi data di antara beberapa kelompok secara berdampingan.
- Deteksi Outlier yang Jelas: Memberikan metode standar untuk mengidentifikasi nilai-nilai yang mungkin merupakan anomali atau outlier.
- Tidak Terpengaruh Ukuran Sampel: Tampilannya tidak terlalu “berisik” bahkan dengan dataset yang sangat besar, berbeda dengan scatter plot.
3.3.4 Kekurangan 👎
- Menyembunyikan Detail Distribusi: Tidak menunjukkan bentuk distribusi secara detail seperti histogram (misalnya, tidak bisa menunjukkan distribusi bimodal/dua puncak).
- Ukuran Sampel Tidak Terlihat: Boxplot dari 10 titik data bisa terlihat sama dengan boxplot dari 1000 titik data. Ukuran sampel tidak secara inheren ditampilkan.
- Kurang Intuitif bagi Pemula: Bagi orang yang tidak terbiasa dengan statistik, komponen-komponennya (kuartil, IQR, whiskers) mungkin kurang intuitif dibandingkan diagram batang atau diagram garis.
- Interpretasi Bergantung pada Definisi: Definisi “whisker” dan “outlier” (misalnya, aturan 1.5 x IQR) dapat bervariasi, meskipun standar ini paling umum digunakan.
3.4 Pie Chart
# Membuat data frame dari data yang Anda berikan
data_perjalanan <- data.frame(
Tanggal = as.Date(c("2025-10-01", "2025-10-01", "2025-10-01", "2025-10-01", "2025-10-01", "2025-10-01", "2025-10-02", "2025-10-02", "2025-10-02", "2025-10-02")),
Rute = c("B1", "B2", "B3", "B1", "B2", "B3", "B1", "B2", "B3", "B1"),
Jam_Berangkat = c("06:30", "07:00", "08:15", "12:00", "13:15", "17:00", "06:30", "07:00", "17:00", "18:30"),
Jam_Tiba = c("06:55", "07:35", "08:40", "12:30", "13:45", "17:35", "06:55", "07:40", "17:40", "19:05"),
Waktu_Tempuh_Terjadwal = c(25, 30, 25, 30, 30, 35, 25, 30, 35, 35),
Waktu_Tempuh_Aktual = c(28, 40, 23, 34, 31, 45, 26, 43, 38, 37),
Keterlambatan = c(3, 10, -2, 4, 1, 10, 1, 13, 3, 2),
Jumlah_Penumpang = c(42, 58, 33, 27, 36, 65, 40, 70, 61, 54),
Hari = c("Rabu", "Rabu", "Rabu", "Rabu", "Rabu", "Rabu", "Kamis", "Kamis", "Kamis", "Kamis"),
Periode_Waktu = c("Pagi", "Pagi", "Pagi", "Siang", "Siang", "Sore", "Pagi", "Pagi", "Sore", "Sore")
)# Menghitung frekuensi setiap Periode_Waktu
frekuensi_periode <- table(data_perjalanan$Periode_Waktu)
# Menghitung persentase
persentase <- round(100 * frekuensi_periode / sum(frekuensi_periode), 1)
# Membuat label untuk pie chart
label_pie <- paste(names(frekuensi_periode), "\n", persentase, "%", sep="")
# Membuat pie chart
pie(frekuensi_periode,
labels = label_pie,
main = "Proporsi Jumlah Perjalanan per Periode Waktu",
col = c("gold", "skyblue", "lightgreen"), # Warna untuk setiap potongan
radius = 1 # Ukuran radius pie chart
)3.4.1 Defenisi
Pie chart (diagram lingkaran) adalah grafik statistik berbentuk lingkaran yang dibagi menjadi beberapa irisan (juring) untuk mengilustrasikan proporsi numerik. Dalam pie chart, panjang busur setiap irisan (dan consequently, sudut pusat dan luasnya) sebanding dengan kuantitas yang diwakilinya. Secara keseluruhan, lingkaran mewakili 100% dari total data.
3.4.2 Aturan Penggunaan
- Menunjukkan Komposisi: Gunakan pie chart hanya ketika Anda ingin menunjukkan bagian dari keseluruhan (komposisi). Setiap irisan harus mewakili kategori yang berbeda, dan total dari semua irisan harus mencapai 100%.
- Data Kategorikal: Pie chart digunakan untuk data kategorikal, di mana setiap kategori berkontribusi pada total keseluruhan.
- Jumlah Irisan Terbatas: Grafik ini menjadi tidak efektif dan sulit dibaca jika memiliki terlalu banyak irisan (umumnya tidak lebih dari 5-7 kategori). Jika Anda memiliki banyak kategori dengan nilai kecil, lebih baik kelompokkan menjadi satu kategori “Lainnya”.
- Hindari untuk Perbandingan: Pie chart tidak ideal untuk membandingkan nilai antar kategori secara presisi, karena mata manusia sulit untuk membedakan ukuran sudut atau luas secara akurat. Untuk perbandingan, diagram batang (bar chart) jauh lebih efektif.
3.4.3 Kelebihan 👍
- Sangat Intuitif: Konsep “bagian dari keseluruhan” sangat mudah dipahami oleh hampir semua audiens, bahkan yang non-teknis sekalipun.
- Visualisasi Proporsi yang Kuat: Memberikan gambaran visual yang jelas tentang seberapa besar kontribusi setiap kategori terhadap total.
- Mudah Dibuat: Merupakan salah satu jenis grafik yang paling sederhana untuk dibuat dan diinterpretasikan (jika digunakan dengan benar).
- Menarik Secara Visual: Tampilannya yang sederhana dan berwarna membuatnya menarik secara visual untuk presentasi atau laporan.
3.4.4 Kekurangan 👎
- Sulit Membandingkan Data: Sangat sulit untuk membandingkan ukuran irisan secara akurat, terutama jika nilainya berdekatan. Diagram batang jauh lebih unggul dalam hal ini.
- Tidak Efektif untuk Banyak Kategori: Menjadi berantakan dan tidak dapat dibaca jika memiliki terlalu banyak irisan (lebih dari 7).
- Dapat Menyesatkan: Jika tidak diberi label persentase, pembaca bisa salah menginterpretasikan proporsi. Penggunaan efek 3D juga dapat mendistorsi persepsi ukuran irisan.
- Tidak Menunjukkan Nilai Absolut: Fokus utamanya adalah pada persentase, sehingga nilai data absolut sering kali hilang kecuali jika ditambahkan label secara eksplisit.
3.5 Scatter PLot
# Membuat data frame dari data yang Anda berikan
data_perjalanan <- data.frame(
Tanggal = as.Date(c("2025-10-01", "2025-10-01", "2025-10-01", "2025-10-01", "2025-10-01", "2025-10-01", "2025-10-02", "2025-10-02", "2025-10-02", "2025-10-02")),
Rute = c("B1", "B2", "B3", "B1", "B2", "B3", "B1", "B2", "B3", "B1"),
Jam_Berangkat = c("06:30", "07:00", "08:15", "12:00", "13:15", "17:00", "06:30", "07:00", "17:00", "18:30"),
Jam_Tiba = c("06:55", "07:35", "08:40", "12:30", "13:45", "17:35", "06:55", "07:40", "17:40", "19:05"),
Waktu_Tempuh_Terjadwal = c(25, 30, 25, 30, 30, 35, 25, 30, 35, 35),
Waktu_Tempuh_Aktual = c(28, 40, 23, 34, 31, 45, 26, 43, 38, 37),
Keterlambatan = c(3, 10, -2, 4, 1, 10, 1, 13, 3, 2),
Jumlah_Penumpang = c(42, 58, 33, 27, 36, 65, 40, 70, 61, 54),
Hari = c("Rabu", "Rabu", "Rabu", "Rabu", "Rabu", "Rabu", "Kamis", "Kamis", "Kamis", "Kamis"),
Periode_Waktu = c("Pagi", "Pagi", "Pagi", "Siang", "Siang", "Sore", "Pagi", "Pagi", "Sore", "Sore")
)# Membuat scatter plot
# Rumus Y ~ X berarti "plot Y sebagai fungsi dari X"
plot(Keterlambatan ~ Waktu_Tempuh_Aktual,
data = data_perjalanan,
main = "Hubungan antara Waktu Tempuh Aktual dan Keterlambatan",
xlab = "Waktu Tempuh Aktual (menit)",
ylab = "Keterlambatan (menit)",
pch = 19, # Mengubah bentuk titik menjadi lingkaran solid
col = "blue" # Mengubah warna titik
)
# Menambahkan garis regresi untuk melihat tren
abline(lm(Keterlambatan ~ Waktu_Tempuh_Aktual, data = data_perjalanan), col = "red", lwd = 2)3.5.1 Defenisi
Scatter plot (diagram tebar) adalah grafik yang digunakan untuk menampilkan nilai dari dua variabel numerik dalam sebuah dataset.Setiap titik pada grafik mewakili satu observasi (atau satu baris data), dengan posisi horizontalnya ditentukan oleh variabel pertama (sumbu X) dan posisi vertikalnya oleh variabel kedua (sumbu Y). Tujuan utamanya adalah untuk mengobservasi dan memvisualisasikan hubungan atau korelasi antara kedua variabel tersebut.
3.5.2 Aturan Penggunaan
- Dua Variabel Numerik: Scatter plot secara eksklusif digunakan untuk memvisualisasikan hubungan antara dua variabel yang bersifat numerik dan kontinu (misalnya, tinggi vs. berat, suhu vs. penjualan es krim, waktu tempuh vs. keterlambatan).
- Identifikasi Hubungan: Gunakan scatter plot untuk
menjawab pertanyaan seperti:
- Adakah hubungan? Apakah titik-titik membentuk pola tertentu atau tersebar acak?
- Apa arah hubungannya?
- Positif: Saat nilai X meningkat, nilai Y juga cenderung meningkat (pola menanjak).
- Negatif: Saat nilai X meningkat, nilai Y cenderung menurun (pola menurun).
- Seberapa kuat hubungannya? Apakah titik-titik berkumpul rapat di sekitar sebuah garis (hubungan kuat) atau tersebar luas (hubungan lemah)?
- Variabel Independen dan Dependen: Biasanya, variabel yang dianggap sebagai penyebab (independen) diletakkan di sumbu X, dan variabel yang dianggap sebagai akibat (dependen) diletakkan di sumbu Y.
3.5.3 Kelebihan 👍
- Menunjukkan Hubungan dengan Jelas: Cara terbaik untuk memvisualisasikan korelasi (positif, negatif, atau tidak ada) antara dua variabel numerik.
- Identifikasi Pola dan Tren: Dapat dengan mudah menunjukkan pola linear, non-linear (melengkung), atau kelompok-kelompok data (clustering).
- Deteksi Outlier: Nilai-nilai ekstrem atau pencilan (outlier) yang tidak mengikuti pola umum akan terlihat jelas sebagai titik yang terisolasi.
- Menampilkan Semua Titik Data: Memberikan gambaran lengkap dari setiap observasi dalam dataset, tidak seperti grafik lain yang meringkas data.
3.5.4 Kekurangan 👎
- Tidak Cocok untuk Data Kategorikal: Tidak bisa digunakan untuk variabel non-numerik tanpa modifikasi lebih lanjut.
- Rentan Terhadap Overplotting: Jika data sangat banyak, titik-titik bisa saling tumpang tindih (overplotting), sehingga sulit melihat kepadatan data yang sebenarnya.
- Korelasi Bukan Sebab-Akibat: Grafik ini hanya menunjukkan hubungan, bukan membuktikan bahwa satu variabel menyebabkan perubahan pada variabel lainnya (correlation does not imply causation).
- Sulit Diinterpretasikan Jika Tidak Ada Pola: Jika titik-titik tersebar secara acak, grafik tidak memberikan banyak informasi selain menunjukkan tidak adanya hubungan.
3.6 Line PLot
# 1. Memuat library (dplyr diperlukan untuk manipulasi data)
# Jika belum punya, jalankan: install.packages("dplyr")
library(dplyr)
# 2. Membuat data frame dari data yang Anda berikan
data_perjalanan <- data.frame(
Tanggal = as.Date(c("2025-10-01", "2025-10-01", "2025-10-01", "2025-10-01", "2025-10-01", "2025-10-01", "2025-10-02", "2025-10-02", "2025-10-02", "2025-10-02")),
Jumlah_Penumpang = c(42, 58, 33, 27, 36, 65, 40, 70, 61, 54)
# Kolom lain tidak diperlukan untuk plot ini
)
# 3. Menghitung total penumpang per tanggal
penumpang_harian <- data_perjalanan %>%
group_by(Tanggal) %>%
summarise(Total_Penumpang = sum(Jumlah_Penumpang))
# 4. Membuat line plot
plot(penumpang_harian$Tanggal, penumpang_harian$Total_Penumpang,
type = "o", # "o" untuk menampilkan titik dan garis (overplotted)
main = "Tren Jumlah Penumpang Harian",
xlab = "Tanggal",
ylab = "Total Jumlah Penumpang",
col = "darkgreen",
pch = 16, # Bentuk titik (lingkaran solid)
lwd = 2 # Ketebalan garis
)3.6.1 Defenisi
Line plot atau diagram garis adalah jenis grafik yang menampilkan informasi sebagai serangkaian titik data yang disebut ‘penanda’ (markers) yang dihubungkan oleh segmen garis lurus. Ini adalah salah satu jenis grafik paling dasar dan umum, yang utamanya digunakan untuk memvisualisasikan tren dari sebuah variabel selama interval atau periode waktu tertentu.
3.6.2 Aturan Penggunaan
- Data Kontinu: Penggunaan utama diagram garis adalah untuk melacak perubahan selama interval yang kontinu dan berurutan, paling sering adalah waktu (misalnya, jam, hari, bulan, tahun). Sumbu horizontal (sumbu X) hampir selalu harus mewakili skala yang berkelanjutan.
- Menunjukkan Tren: Gunakan diagram garis ketika Anda ingin menekankan tren, pola, atau fluktuasi dalam data Anda. Grafik ini membantu menjawab pertanyaan seperti, “Apakah nilainya meningkat, menurun, atau tetap konstan seiring waktu?”
- Membandingkan Tren: Anda dapat memplot beberapa garis pada grafik yang sama untuk membandingkan tren dari kelompok yang berbeda. Misalnya, membandingkan jumlah penumpang harian dari dua rute bus yang berbeda.
- Jangan Gunakan untuk Data Kategorikal: Hindari menggunakan diagram garis untuk data dengan kategori yang tidak berurutan pada sumbu X (seperti Rute atau Periode_Waktu dalam data Anda). Melakukan hal ini dapat secara keliru menyiratkan adanya hubungan atau urutan antar kategori yang sebenarnya tidak ada. Diagram batang (bar chart) jauh lebih baik untuk tujuan itu.
3.6.3 Kelebihan 👍
- Sangat Efektif untuk Tren: Ini adalah grafik terbaik untuk menunjukkan perubahan dan tren dari waktu ke waktu, sehingga memudahkan untuk melihat pola seperti pertumbuhan, penurunan, atau volatilitas.
- Menampilkan Banyak Data: Diagram garis dapat menangani sejumlah besar titik data tanpa menjadi berantakan, dan tetap menunjukkan tren keseluruhan dengan jelas.
- Intuitif dan Mudah Dibaca: Konsep garis yang bergerak naik atau turun seiring waktu sangat intuitif untuk dipahami oleh sebagian besar audiens.
- Menyoroti Perubahan Kecil: Sangat baik dalam menunjukkan fluktuasi halus dan perubahan kecil antara titik data yang berurutan.
3.6.4 Kekurangan 👎
- Tidak Cocok untuk Perbandingan Kategori: Tidak sesuai untuk membandingkan nilai antara kategori yang terpisah. Diagram batang lebih unggul untuk tugas ini.
- Bisa Menjadi Rumit: Jika Anda memplot terlalu banyak garis pada satu grafik, itu bisa menjadi kusut dan sangat sulit dibaca.
- Dapat Menyesatkan: Skala sumbu Y yang dimanipulasi (tidak dimulai dari nol atau memiliki interval yang tidak konsisten) dapat mendistorsi persepsi perubahan, membuat tren tampak lebih atau kurang dramatis dari yang sebenarnya.
- Menyembunyikan Sebaran Data: Grafik ini hanya menunjukkan satu nilai (seperti rata-rata atau total) pada setiap titik dan tidak menunjukkan distribusi atau rentang data yang mendasari titik tersebut.
3.7 Density Plot
# 1. Membuat data frame
data_perjalanan <- data.frame(
Waktu_Tempuh_Terjadwal = c(25, 30, 25, 30, 30, 35, 25, 30, 35, 35),
Waktu_Tempuh_Aktual = c(28, 40, 23, 34, 31, 45, 26, 43, 38, 37),
Keterlambatan = c(3, 10, -2, 4, 1, 10, 1, 13, 3, 2)
)
# 2. Menghitung estimasi densitas
densitas_keterlambatan <- density(data_perjalanan$Keterlambatan)
# 3. Membuat density plot
plot(densitas_keterlambatan,
main = "Diagram Densitas Waktu Keterlambatan",
xlab = "Keterlambatan (menit)",
ylab = "Densitas",
lwd = 2,
col = "darkred"
)
# Menambahkan warna di bawah kurva
polygon(densitas_keterlambatan, col = "salmon", border = "darkred")
# Menambahkan garis vertikal di titik 0 untuk menandai "tepat waktu"
abline(v = 0, col = "blue", lty = 2, lwd = 2)3.7.1 Defenisi
Density Plot (Diagram Densitas) adalah visualisasi yang menunjukkan distribusi probabilitas dari sebuah variabel numerik yang kontinu. Anda bisa menganggapnya sebagai versi “halus” dari histogram. Alih-alih menggunakan batang-batang diskrit (bins), diagram densitas menggunakan Kernel Density Estimation (KDE) untuk menggambar kurva yang mulus, yang lebih baik dalam menunjukkan bentuk distribusi data. Penting untuk dipahami : 1. Sumbu X adalah nilai dari variabel yang Anda amati (misalnya, Jumlah Penumpang). 2. Sumbu Y adalah densitas probabilitas, bukan frekuensi atau jumlah. 3. Total luas area di bawah kurva selalu sama dengan 1. Area di bawah kurva pada rentang tertentu merepresentasikan probabilitas bahwa suatu nilai akan jatuh dalam rentang tersebut.
3.7.2 Aturan Penggunaan
- Data Numerik Kontinu: Sama seperti histogram, diagram densitas digunakan untuk data numerik yang bersifat kontinu atau memiliki banyak sekali kemungkinan nilai.
- Memahami Bentuk Distribusi: Ini adalah kegunaan
utamanya. Diagram densitas sangat baik untuk melihat bentuk sebaran
data, seperti:
- Normal (lonceng): Data terpusat di tengah.
- Miring (Skewed): Puncak data condong ke kiri atau ke kanan.
- Bimodal/Multimodal: Terdapat dua atau lebih puncak dalam data.
- Membandingkan Distribusi: Diagram densitas sangat efektif untuk membandingkan distribusi dari beberapa kelompok data pada satu grafik yang sama karena garis-garisnya bisa saling tumpang tindih tanpa menutupi satu sama lain (dengan mengatur transparansi). Ini lebih baik daripada menumpuk beberapa histogram.
3.7.3 Kelebihan 👍
- Visualisasi yang Halus: Menghasilkan kurva yang mulus dan kontinu, yang seringkali lebih mudah untuk menginterpretasikan bentuk distribusi daripada batang-batang histogram yang kaku.
- Lebih Baik untuk Perbandingan: Sangat unggul untuk membandingkan beberapa distribusi secara bersamaan dalam satu plot karena garis-garisnya tidak mengaburkan satu sama lain.
- Tidak Tergantung pada Titik Awal: Tampilannya tidak dipengaruhi oleh titik awal bins seperti pada histogram, sehingga memberikan representasi yang lebih stabil.
- Menunjukkan Struktur Lebih Jelas: Dapat dengan lebih baik menunjukkan detail seperti puncak ganda (bimodalitas) yang mungkin tidak terlihat jelas pada histogram dengan lebar bin yang salah.
3.7.4 Kekurangan 👎
- Lebih Abstrak: Konsep “densitas probabilitas” pada sumbu Y kurang intuitif bagi audiens non-teknis dibandingkan dengan “frekuensi” pada histogram.
- Sensitif Terhadap Bandwidth: Sama seperti histogram yang sensitif terhadap jumlah bins, diagram densitas sensitif terhadap parameter penghalusan (bandwidth) yang bisa mengubah bentuk kurva.
- Dapat Menyiratkan Data di Luar Rentang: Kurva yang dihaluskan terkadang bisa melampaui rentang data asli (misalnya, menunjukkan densitas kecil untuk nilai negatif padahal data Anda semuanya positif).
- Tidak Menunjukkan Jumlah Data: Sama seperti boxplot, diagram ini tidak secara langsung menunjukkan berapa banyak titik data yang digunakan untuk membuatnya.
3.8 Ridgeline Plot
# 1. Install dan muat library yang dibutuhkan
# Jalankan ini hanya sekali jika Anda belum menginstalnya
# install.packages("ggplot2")
# install.packages("ggridges")
library(ggplot2)
library(ggridges)
# 2. Membuat data frame dari data yang Anda berikan
data_perjalanan <- data.frame(
Jumlah_Penumpang = c(42, 58, 33, 27, 36, 65, 40, 70, 61, 54),
Periode_Waktu = c("Pagi", "Pagi", "Pagi", "Siang", "Siang", "Sore", "Pagi", "Pagi", "Sore", "Sore")
)
# 3. Membuat Ridgeline Plot
ggplot(data_perjalanan, aes(x = Jumlah_Penumpang, y = Periode_Waktu, fill = Periode_Waktu)) +
geom_density_ridges(alpha = 0.7) + # Membuat plot densitas bertingkat
labs(
title = "Distribusi Jumlah Penumpang per Periode Waktu",
subtitle = "Perbandingan kepadatan penumpang pada waktu yang berbeda",
x = "Jumlah Penumpang",
y = "Periode Waktu"
) +
theme_ridges() + # Menggunakan tema khas dari ggridges
theme(legend.position = "none") # Menghilangkan legenda karena sumbu Y sudah jelas## Picking joint bandwidth of 4.79
3.8.1 Definisi
Ridgeline Plot (juga dikenal sebagai Joyplot) adalah visualisasi yang menunjukkan distribusi variabel numerik untuk beberapa kategori yang berbeda. Bayangkan ini seperti menumpuk beberapa diagram densitas (density plot) secara vertikal. Setiap kurva densitas mewakili satu kategori dan diberi sedikit pergeseran vertikal, sehingga memungkinkan perbandingan distribusi antar kategori dengan cepat tanpa tumpang tindih yang berlebihan. Nama “Joyplot” terinspirasi dari sampul album “Unknown Pleasures” oleh band Joy Division yang ikonik.
3.8.2 Aturan Pengguna
- Membandingkan Banyak Distribusi: Gunakan Ridgeline Plot ketika Anda ingin membandingkan distribusi variabel numerik di antara banyak kategori (biasanya lebih dari 3 atau 4). Ini jauh lebih rapi daripada menumpuk banyak diagram densitas atau histogram.
- Variabel Kategorikal sebagai Sumbu Y: Variabel yang bersifat kategorikal atau diskrit (seperti Periode_Waktu, Hari, atau Rute) ditempatkan pada sumbu Y untuk memisahkan setiap kurva densitas.
- Variabel Numerik sebagai Sumbu X: Variabel numerik yang distribusinya ingin Anda lihat (seperti Jumlah_Penumpang atau Keterlambatan) ditempatkan pada sumbu X.
- Urutan Kategori yang Logis: Untuk pembacaan yang lebih mudah, urutkan kategori pada sumbu Y secara logis jika memungkinkan (misalnya, Pagi -> Siang -> Sore, atau Senin -> Selasa -> Rabu).
3.8.3 Kelebihan 👍
- Sangat Efisien untuk Perbandingan: Cara yang sangat efektif dan hemat ruang untuk menampilkan dan membandingkan banyak distribusi sekaligus dalam satu grafik.
- Visual yang Menarik: Tampilannya unik, menarik secara visual, dan dapat menyajikan informasi kompleks dengan cara yang elegan.
- Intuitif: Meskipun terlihat kompleks, konsep membandingkan “gundukan” atau bentuk kurva antar kategori cukup mudah dipahami secara intuitif.
- Menyoroti Perbedaan Pola: Sangat baik dalam menyoroti perbedaan bentuk distribusi, seperti pergeseran puncak, perubahan sebaran, atau kemiringan antar kategori.
3.8.4 Kekurangan 👎
- Kurang Akurat untuk Nilai Absolut: Sulit untuk membaca nilai densitas probabilitas yang tepat pada sumbu vertikal setiap kurva karena sifatnya yang tumpang tindih.
- Potensi Tumpang Tindih: Jika distribusinya sangat lebar atau puncaknya tumpang tindih, bagian dari kurva di belakang bisa tersembunyi.
- Memerlukan Library Tambahan: Tidak termasuk dalam fungsi dasar R, sehingga memerlukan instalasi paket tambahan seperti ggridges.
- Bukan untuk Perbandingan Presisi: Kurang cocok jika tujuan utamanya adalah membandingkan nilai median atau rata-rata secara presisi. Boxplot mungkin lebih baik untuk itu.
4 Kesimpulan
Insight yang diperoleh dari visualisasi:
- Di Mana Titik Paling Sibuk? (Bar Chart & Pie
Chart) 📊
- Insight: Periode Pagi adalah yang paling sibuk dari segi frekuensi perjalanan, namun Periode Sore secara konsisten paling padat penumpang. Rute B2 dan B1 sedikit lebih ramai daripada B3, meskipun perbedaannya tidak terlalu besar. Ini menunjukkan bahwa meskipun perjalanan pagi lebih sering, perjalanan sore lebih krusial dari segi kapasitas.
- Data Pendukung: Pie chart menunjukkan slice “Pagi” paling besar (5 dari 10 perjalanan). Bar chart perbandingan penumpang menunjukkan rata-rata penumpang sore hari paling tinggi.
- Apa Pola Umum Penumpang? (Histogram & Density
Plot) 📈
- Insight: Terdapat indikasi adanya dua kelompok (bimodal) jumlah penumpang. Ada kelompok perjalanan yang relatif sepi (sekitar 30-40 penumpang) dan kelompok perjalanan yang sangat ramai (sekitar 55-70 penumpang). Tidak banyak perjalanan dengan jumlah penumpang di “tengah-tengah” (sekitar 45-50).
- Data Pendukung: Histogram atau Density Plot akan menunjukkan dua “puncak” atau “gundukan”, bukan satu puncak berbentuk lonceng yang ideal. Ini menandakan ada dua skenario umum: “sepi” atau “ramai”.
- Kapan Waktu Paling Bervariasi? (Boxplot &
Ridgeline Plot) 🎻
- Insight: Periode Pagi memiliki variasi jumlah penumpang paling tinggi. Ada perjalanan pagi yang sepi (33 penumpang) dan ada yang sangat ramai (70 penumpang). Sebaliknya, Periode Sore lebih konsisten ramai, dengan jumlah penumpang yang tidak terlalu jauh berbeda satu sama lain. Periode Siang adalah yang paling sepi dan paling konsisten.
- Data Pendukung: Boxplot untuk “Pagi” akan terlihat paling panjang (rentang datanya besar), sedangkan boxplot untuk “Sore” dan “Siang” akan lebih pendek.
- Bagaimana Trennya? (Line Plot) 📉
- Insight: Terjadi penurunan total penumpang dari tanggal 1 Oktober (total 261 penumpang) ke 2 Oktober (total 225 penumpang). Meskipun hanya data dua hari, ini adalah tren awal yang perlu dipantau.
- Data Pendukung: Garis pada line plot akan bergerak menurun dari titik pertama (1 Okt) ke titik kedua (2 Okt).
- Apa yang Menyebabkan Keterlambatan? (Scatter Plot)
- Insight: Terdapat korelasi positif yang kuat antara Waktu Tempuh Aktual dan Keterlambatan. Artinya, semakin lama sebuah perjalanan (mungkin karena macet), maka durasi keterlambatannya juga akan semakin besar. Ini adalah insight paling jelas dan logis dari data ini.
- Data Pendukung: Titik-titik pada scatter plot akan membentuk pola yang cenderung naik dari kiri bawah ke kanan atas.
Operasional bus memiliki dua mode utama: ramai dan sepi. Mode ramai secara konsisten terjadi di sore hari. Sementara itu, pagi hari adalah waktu yang paling tidak terduga; bisa sangat ramai atau justru sepi. Perjalanan di siang hari cenderung sepi. Faktor utama yang paling memengaruhi keterlambatan adalah lamanya waktu di perjalanan.