Dataset ini berasal dari sistem bike sharing di Washington, D.C., yang diperoleh dari UCI Machine Learning Repository. Dataset tersebut mencatat aktivitas penyewaan sepeda harian selama dua tahun, lengkap dengan informasi terkait cuaca, musim, hari kerja, hari libur, serta tipe pengguna (casual dan registered). Setelah memahami konteks pengumpulan data, langkah selanjutnya adalah menganalisis hubungan antarvariabel numerik maupun kategorik untuk melihat pola penggunaan sepeda secara lebih mendalam.
Pada tahap ini, analis mulai mengajukan beberapa pertanyaan:
Apakah terdapat hubungan antara jumlah penyewa casual dan registered? Apakah total penyewaan sepeda berbeda secara signifikan antara hari libur dan bukan hari libur? Bagaimana pola distribusi penyewaan jika dilihat berdasarkan hari dalam seminggu?
Untuk menjawab pertanyaan tersebut digunakan visualisasi data kontinu (bivariate), yaitu visualisasi yang berfokus pada hubungan antara dua variabel dalam satu waktu. Pada scatter plot antara casual dan registered, visualisasi membantu melihat kekuatan dan arah hubungan kedua tipe pengguna tersebut. Pada boxplot holiday terhadap cnt, visualisasi menunjukkan perbedaan distribusi jumlah penyewaan antara hari libur dan bukan hari libur. Sedangkan pada violin plot weekday terhadap cnt, visualisasi memperlihatkan bentuk distribusi dan variasi penyewaan sepeda di setiap hari dalam seminggu.
Data diimpor dari file berformat CSV ke dalam R dengan menggunakan
fungsi read.csv(). Pastikan lokasi atau path file
disesuaikan dengan folder tempat dataset tersimpan di komputer Anda agar
proses pembacaan data berjalan dengan benar. Berikut merupakan contoh
kode yang digunakan untuk memuat data tersebut:
bike_data <- read.csv("D:/Visualisasi Data/day.csv")
colnames(bike_data)
## [1] "instant" "dteday" "season" "yr" "mnth"
## [6] "holiday" "weekday" "workingday" "weathersit" "temp"
## [11] "atemp" "hum" "windspeed" "casual" "registered"
## [16] "cnt"
Berdasarkan output yang ditampilkan, dataset ini memiliki 16 variabel
yang terdiri dari variabel numerik dan kategorik. Variabel numerik yang
ada antara lain temp, atemp, hum,
windspeed, casual, registered,
dan cnt. Variabel-variabel tersebut memberikan informasi
mengenai suhu, suhu terasa, kelembapan, kecepatan angin, jumlah
penyewaan oleh pengguna casual, jumlah penyewaan oleh pengguna
registered, serta total keseluruhan penyewaan sepeda.
| No | Variabel.Numerik | Keterangan |
|---|---|---|
| 1 | temp | suhu dalam skala Celsius |
| 2 | atemp | suhu yang dirasakan |
| 3 | hum | kelembapan |
| 4 | windspeed | kecepatan angin |
| 5 | casual | jumlah penyewaan sepeda oleh pengguna kasual |
| 6 | registered | jumlah penyewaan sepeda oleh pengguna terdaftar |
| 7 | cnt | total jumlah penyewaan sepeda (casual + registered) |
Sementara itu, variabel kategorik seperti season,
weathersit, dan workingday dilakukan proses
recode agar lebih mudah dibaca dan dipahami saat analisis maupun
visualisasi. Dengan recode ini, angka-angka yang sebelumnya mewakili
kategori akan diganti menjadi label yang lebih jelas. Tujuannya supaya
interpretasi jadi lebih sederhana. Misalnya, saat membuat grafik jumlah
penyewaan berdasarkan musim, kita bisa langsung melihat label “Spring”,
“Summer”, “Fall”, atau “Winter” tanpa harus mengingat kode angka
masing-masing musim. Visualisasi jadi lebih enak dilihat dan lebih mudah
dipahami oleh orang yang membaca. Meskipun dilakukan recode, struktur
datanya tetap sama. Yang berubah hanya penyajian nilai pada variabel
kategoriknya menjadi lebih deskriptif, sehingga analisis dan visualisasi
selanjutnya bisa dibuat lebih informatif dan tidak membingungkan.
datatable(bike_data, options = list(pageLength = 5, autoWidth = TRUE))
Pada visualisasi bivariate, analisis tidak lagi hanya fokus pada satu variabel, tetapi mulai melihat hubungan antara dua variabel dalam satu waktu. Tujuannya adalah untuk memahami apakah terdapat pola, kecenderungan, atau hubungan tertentu yang dapat menjelaskan perubahan pada data. Dalam konteks dataset bike sharing ini, visualisasi kontinu bivariate digunakan untuk melihat bagaimana satu variabel numerik berhubungan dengan variabel lainnya. Misalnya, apakah peningkatan jumlah pengguna casual diikuti oleh peningkatan pengguna registered, atau bagaimana total penyewaan sepeda berubah ketika dibandingkan dengan variabel waktu atau jenis hari tertentu. Dengan pendekatan ini, kita tidak hanya melihat sebaran data, tetapi juga mulai mengidentifikasi arah hubungan, kekuatan hubungan, serta kemungkinan adanya pola linear atau non-linear. Melalui visualisasi seperti scatter plot, boxplot, maupun violin plot, hubungan antarvariabel dapat terlihat lebih jelas secara visual. Pendekatan ini membantu memberikan gambaran yang lebih utuh mengenai pola penggunaan sepeda, sehingga analisis tidak hanya berhenti pada deskripsi data, tetapi juga mulai mengarah pada pemahaman faktor-faktor yang berkaitan dengan perubahan jumlah penyewaan sepeda.
Scatter plot adalah grafik yang menunjukkan hubungan antara dua
variabel numerik. Setiap titik pada scatter plot mewakili satu
pengamatan, dengan posisi titik ditentukan oleh nilai kedua variabel.
Berikut adalah contoh kode untuk membuat scatter plot antara
cnt dan temp:
ggplot(bike_data, aes(x = temp, y = cnt)) +
geom_point(color = "steelblue", alpha = 0.5) +
labs(title = "Scatter Plot of Total Bike Rentals vs Temperature",
x = "Temperature (temp)",
y = "Total Rentals (cnt)") +
theme_minimal()
Scatter plot di atas menunjukkan hubungan antara suhu (temp) dan jumlah penyewaan sepeda (cnt). Setiap titik pada grafik mewakili satu hari, dengan posisi horizontal menunjukkan suhu dan posisi vertikal menunjukkan jumlah penyewaan sepeda pada hari tersebut. Dari visualisasi ini terlihat bahwa terdapat pola positif antara suhu dan jumlah penyewaan sepeda, di mana semakin tinggi suhu, semakin banyak penyewaan sepeda yang terjadi. Hal ini menunjukkan bahwa cuaca yang lebih hangat cenderung meningkatkan penggunaan sepeda, sementara suhu yang lebih rendah mungkin membuat orang enggan untuk menyewa sepeda. Meskipun terdapat beberapa titik yang menyebar, pola umum menunjukkan bahwa suhu memiliki pengaruh positif terhadap jumlah penyewaan sepeda.
Dengan variabel yang berbeda yaitu temp dan
atemp:
ggplot(bike_data, aes(x = temp, y = atemp)) +
geom_point(color = "maroon", alpha = 0.5) +
labs(title = "Scatter Plot of Temp vs Atemp",
x = "Temp",
y = "Atemp") +
theme_minimal()
Scatter plot tersebut menunjukkan hubungan positif kuat dan hampir linear sempurna antara suhu (Temp) dan suhu yang dirasakan (Atemp). Terlihat dari titik-titik data yang membentuk pola garis lurus dari kiri bawah ke kanan atas, yang berarti semakin tinggi suhu (Temp), maka semakin tinggi pula suhu yang dirasakan (Atemp). Meskipun terdapat beberapa titik yang sedikit menyimpang, secara keseluruhan kedua variabel memiliki korelasi yang sangat tinggi.
Boxplot bivariate digunakan untuk membandingkan distribusi variabel
numerik (cnt) berdasarkan kategori dari variabel lain, seperti musim
(season). Berikut adalah contoh kode untuk membuat boxplot bivariate
antara cnt dan season:
ggplot(bike_data, aes(x = season, y = cnt)) +
geom_boxplot(fill = "lightblue", color = "darkblue") +
labs(title = "Boxplot of Total Bike Rentals by Musim",
x = "Musim",
y = "Total Rentals (cnt)") +
theme_minimal()
Boxplot bivariate di atas digunakan untuk membandingkan distribusi
jumlah penyewaan sepeda (cnt) berdasarkan kategori musim (season).
Setiap kotak pada grafik mewakili distribusi penyewaan sepeda untuk
masing-masing musim, dengan garis di dalam kotak menunjukkan median,
batas kotak menunjukkan kuartil pertama (Q1) dan kuartil ketiga (Q3),
serta whisker yang memanjang menunjukkan rentang data. Dari visualisasi
ini terlihat bahwa musim Summer memiliki jumlah penyewaan sepeda yang
lebih tinggi dibandingkan dengan musim lainnya, dengan median yang
berada di kisaran 5.000 penyewaan per hari. Sementara itu, musim Winter
memiliki jumlah penyewaan yang lebih rendah, dengan median di bawah
3.000 penyewaan per hari. Hal ini menunjukkan bahwa penggunaan sepeda
cenderung meningkat selama musim panas dan menurun selama musim dingin,
kemungkinan karena faktor cuaca yang mempengaruhi kenyamanan dalam
menggunakan sepeda.
Dengan variabel yang berbeda yaitu weekday dan
cnt:
ggplot(bike_data, aes(x = factor(weekday), y = cnt)) +
geom_boxplot(fill = "magenta", color = "maroon") +
labs(title = "Boxplot of Total Bike Rentals by Weekday",
x = "Weekday",
y = "Total Rentals (cnt)") +
theme_minimal()
Boxplot bivariate di atas digunakan untuk membandingkan distribusi jumlah penyewaan sepeda (cnt) berdasarkan kategori hari dalam minggu (Weekday). Setiap kotak pada grafik mewakili distribusi total penyewaan sepeda pada masing-masing hari. Garis di dalam kotak menunjukkan nilai median, batas bawah dan atas kotak menunjukkan kuartil pertama (Q1) dan kuartil ketiga (Q3), sedangkan whisker menunjukkan rentang data secara keseluruhan.
Dari visualisasi tersebut terlihat bahwa jumlah penyewaan sepeda relatif tidak jauh berbeda antar hari. Beberapa hari seperti pertengahan minggu menunjukkan median yang sedikit lebih tinggi dibandingkan hari lainnya, sedangkan hari-hari tertentu memiliki median yang sedikit lebih rendah. Panjang kotak whisker yang hampir sama menunjukkan bahwa variasi jumlah penyewaan sepeda antar hari relatif serupa. Secara keseluruhan, hal ini menunjukkan bahwa perbedaan hari dalam seminggu tidak memberikan pengaruh yang terlalu besar terhadap jumlah penyewaan sepeda.
Violin plot bivariate digunakan untuk membandingkan distribusi
variabel numerik (cnt) berdasarkan kategori dari variabel lain, seperti
kondisi cuaca (weathersit). Berikut adalah contoh kode untuk membuat
violin plot bivariate antara cnt dan
weathersit:
ggplot(bike_data, aes(x = weathersit, y = cnt)) +
geom_violin(fill = "lightcoral", color = "darkred", alpha = 0.6) +
geom_boxplot(width = 0.1, fill = "white", color = "black", outlier.shape = NA) +
labs(title = "Violin Plot of Total Bike Rentals by Kondisi Cuaca",
x = "Kondisi Cuaca",
y = "Total Rentals (cnt)") +
theme_minimal()
Violin plot bivariate di atas digunakan untuk membandingkan distribusi jumlah penyewaan sepeda (cnt) berdasarkan kondisi cuaca (weathersit). Setiap bentuk violin mewakili distribusi penyewaan sepeda untuk masing-masing kondisi cuaca, dengan bagian yang lebih lebar menunjukkan bahwa lebih banyak hari memiliki jumlah penyewaan pada kisaran tersebut. Boxplot di dalam violin memberikan informasi statistik ringkas, seperti median dan kuartil. Dari visualisasi ini terlihat bahwa kondisi cuaca yang cerah (Clear) memiliki distribusi penyewaan sepeda yang lebih tinggi dan lebih padat dibandingkan dengan kondisi cuaca lainnya, seperti hujan ringan (Light Rain) atau hujan deras (Heavy Rain), yang memiliki distribusi penyewaan yang lebih rendah. Hal ini menunjukkan bahwa kondisi cuaca yang baik cenderung meningkatkan penggunaan sepeda, sementara kondisi cuaca yang buruk dapat mengurangi minat orang untuk menyewa sepeda.
Dengan variabel yang berbeda yaitu weekday dan
cnt:
ggplot(bike_data, aes(x = season, y = cnt)) +
geom_violin(fill = "darkgreen", alpha = 0.6) +
geom_boxplot(width = 0.1, fill = "white", outlier.shape = NA) +
labs(title = "Violin Plot of Total Rentals by Season",
x = "Season",
y = "Total Rentals (cnt)") +
theme_minimal()
Violin plot bivariate di atas digunakan untuk melihat distribusi jumlah penyewaan sepeda (cnt) pada tiap musim (season). Setiap bentuk violin menunjukkan sebaran data, bagian yang lebih lebar menandakan data yang lebih banyak pada rentang tertentu, sedangkan kotak di dalamnya menunjukkan median serta kuartil. Dari grafik terlihat bahwa musim Fall dan Summer memiliki jumlah penyewaan sepeda yang relatif lebih tinggi. Sebaliknya, musim Spring memiliki jumlah penyewaan paling rendah, sementara musim Winter berada di tingkat menengah.
Selain itu, bentuk violin pada Fall dan Summer yang lebih lebar di bagian atas menunjukkan bahwa pada musim tersebut sering terjadi penyewaan dalam jumlah tinggi. Sebaliknya, Spring memiliki distribusi yang lebih terkonsentrasi pada nilai rendah. Hal ini menunjukkan bahwa musim memiliki pengaruh terhadap penggunaan sepeda, kemungkinan karena kondisi cuaca dan kenyamanan bersepeda yang berbeda pada tiap musim.
Visualisasi bivariate antara jumlah penyewaan sepeda (cnt) dengan variabel lain seperti suhu (temp), musim (season), dan kondisi cuaca (weathersit) menunjukkan bahwa