Visualisasi Data Kategorik dan Diskrit

Pembelajaran kali ini akan membahas tentang visualisasi data kategorik dan diskrit. Data kategorik adalah data yang terdiri dari kategori atau kelompok, sedangkan data diskrit adalah data yang terdiri dari nilai-nilai yang dapat dihitung atau dihitung secara terpisah. Sebagai contoh, pembelajaran kali ini akan menggunakan data Bike Sharing yang berisi informasi tentang penggunaan sepeda di sebuah kota.

library(tidyverse)
library(ggplot2)
library(readr)

Pendahuluan: Memahami Data Kategorik dan Diskrit

Dataset ini berasal dari sistem bike sharing di Washington, D.C., yang diperoleh dari UCI Machine Learning Repository yang dapat di akses melalui link ini. Dataset ini mencatat aktivitas penyewaan sepeda setiap hari selama dua tahun. Selain jumlah sepeda yang disewa, sistem juga merekam musim, kondisi cuaca, serta apakah hari tersebut merupakan hari kerja atau bukan. Data ini digunakan oleh pengelola kota untuk menjawab pertanyaan operasional:

Kapan permintaan sepeda meningkat, dan dalam kondisi apa layanan harus disiapkan lebih banyak?

Artinya, analisis dilakukan untuk memahami pola penggunaan dalam berbagai situasi, bukan sekadar menghitung rata-rata penyewaan. Sebelum melakukan analisis lebih lanjut, penting untuk memahami struktur data dan distribusi kategori dalam dataset. Visualisasi digunakan sebagai alat eksplorasi awal untuk melihat bagaimana data tersusun dan bagaimana kategori-kategori dalam data terdistribusi.

Memuat Data dan Menjelajahi Struktur Data

Import data dari file CSV ke dalam R menggunakan fungsi read.csv(). Pastikan untuk menyesuaikan path file dengan lokasi di mana dataset disimpan di komputer Anda. Berikut adalah kode untuk memuat data:

# Load data
bike_data <- read.csv("bike_sharing_dataset_by-day.csv")
head(bike_data)
##   instant     dteday season yr mnth holiday weekday workingday weathersit
## 1       1 2011-01-01      1  0    1       0       6          0          2
## 2       2 2011-01-02      1  0    1       0       0          0          2
## 3       3 2011-01-03      1  0    1       0       1          1          1
## 4       4 2011-01-04      1  0    1       0       2          1          1
## 5       5 2011-01-05      1  0    1       0       3          1          1
## 6       6 2011-01-06      1  0    1       0       4          1          1
##       temp    atemp      hum windspeed casual registered  cnt
## 1 0.344167 0.363625 0.805833 0.1604460    331        654  985
## 2 0.363478 0.353739 0.696087 0.2485390    131        670  801
## 3 0.196364 0.189405 0.437273 0.2483090    120       1229 1349
## 4 0.200000 0.212122 0.590435 0.1602960    108       1454 1562
## 5 0.226957 0.229270 0.436957 0.1869000     82       1518 1600
## 6 0.204348 0.233209 0.518261 0.0895652     88       1518 1606

Tabel di atas menunjukkan beberapa baris pertama dari dataset bike sharing. Setiap baris mewakili data harian tentang penggunaan sepeda, dengan berbagai kolom yang mencakup informasi seperti tanggal, jumlah sepeda yang disewa, kondisi cuaca, dan lain-lain. Tabel data berisi ratusan baris pengamatan. Variabel kategorik dalam dataset ini termasuk season, weathersit, dan workingday.

Deskripsi Data Kategorik
No. Variabel Kategorik Keterangan
1. season

Variabel Musim, diantaranya:

1 = Spring (musim semi)

2 = Summer (musim panas)

3 = Fall (musim gugur)

4 = Winter (musim dingin)

2. weathersit

Variabel Kondisi Cuaca, diantaranya:

1 = Clear (cerah)

2 = Cloudy (berawan)

3 = Light Rain (hujan ringan)

4 = Heavy Rain (hujan lebat atau badai)

3. workingday

Variabel Jenis Hari, diantaranya:

1 = Working Day (hari kerja)

0 = Holiday (hari libur)

Untuk memudahkan dalam interpretasi visualisasi dan analisis selanjutnya, kita dapat melakukan recode pada variabel-variabel kategorik tersebut untuk mengganti angka dengan label yang lebih deskriptif.

  1. Recode variabel season untuk mengganti angka dengan nama musim yang lebih mudah dipahami. Berikut adalah kode untuk melakukan recode pada variabel season:
# Ubah kode musim menjadi nama musim
bike_data$season <- factor(bike_data$season,
                     levels = c(1, 2, 3, 4),
                     labels = c("Spring", "Summer", "Fall", "Winter"))
  1. Recode variabel weathersit untuk mengganti angka dengan deskripsi kondisi cuaca yang lebih mudah dipahami. Berikut adalah kode untuk melakukan recode pada variabel weathersit:
# Ubah kode kondisi cuaca menjadi deskripsi yang lebih mudah dipahami
bike_data$weathersit <- factor(bike_data$weathersit,
                               levels = c(1, 2, 3, 4),
                               labels = c("Clear", "Cloudy", "Light Rain", "Heavy Rain"))
  1. Recode variabel workingday untuk mengganti angka dengan deskripsi yang lebih mudah dipahami. Berikut adalah kode untuk melakukan recode pada variabel workingday:
# Ubah kode jenis hari menjadi deskripsi yang lebih mudah dipahami
bike_data$workingday <- factor(bike_data$workingday,
                               levels = c(0, 1),
                               labels = c("Holiday", "Working Day"))

Variabel yang telah direcode sekarang memiliki label yang lebih deskriptif, sehingga memudahkan dalam interpretasi visualisasi dan analisis selanjutnya. Berikut adalah tampilan beberapa baris pertama dan terakhir dari dataset setelah melakukan recode pada variabel kategorik:

head(bike_data)
##   instant     dteday season yr mnth holiday weekday  workingday weathersit
## 1       1 2011-01-01 Spring  0    1       0       6     Holiday     Cloudy
## 2       2 2011-01-02 Spring  0    1       0       0     Holiday     Cloudy
## 3       3 2011-01-03 Spring  0    1       0       1 Working Day      Clear
## 4       4 2011-01-04 Spring  0    1       0       2 Working Day      Clear
## 5       5 2011-01-05 Spring  0    1       0       3 Working Day      Clear
## 6       6 2011-01-06 Spring  0    1       0       4 Working Day      Clear
##       temp    atemp      hum windspeed casual registered  cnt
## 1 0.344167 0.363625 0.805833 0.1604460    331        654  985
## 2 0.363478 0.353739 0.696087 0.2485390    131        670  801
## 3 0.196364 0.189405 0.437273 0.2483090    120       1229 1349
## 4 0.200000 0.212122 0.590435 0.1602960    108       1454 1562
## 5 0.226957 0.229270 0.436957 0.1869000     82       1518 1600
## 6 0.204348 0.233209 0.518261 0.0895652     88       1518 1606

Data yang telah direcode menunjukkan bahwa variabel season sekarang memiliki label “Spring”, “Summer”, “Fall”, dan “Winter”. Variabel weathersit memiliki label “Clear”, “Cloudy”, “Light Rain”, dan “Heavy Rain”. Variabel workingday memiliki label “Holiday” dan “Working Day”. Dengan menggunakan label yang lebih deskriptif, kita dapat dengan mudah memahami kategori-kategori dalam dataset dan melakukan analisis yang lebih informatif. Selain itu, kita juga dapat melihat struktur data untuk memastikan bahwa variabel-variabel kategorik telah direcode dengan benar.

str(bike_data)
## 'data.frame':    731 obs. of  16 variables:
##  $ instant   : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ dteday    : chr  "2011-01-01" "2011-01-02" "2011-01-03" "2011-01-04" ...
##  $ season    : Factor w/ 4 levels "Spring","Summer",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ yr        : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ mnth      : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ holiday   : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ weekday   : int  6 0 1 2 3 4 5 6 0 1 ...
##  $ workingday: Factor w/ 2 levels "Holiday","Working Day": 1 1 2 2 2 2 2 1 1 2 ...
##  $ weathersit: Factor w/ 4 levels "Clear","Cloudy",..: 2 2 1 1 1 1 2 2 1 1 ...
##  $ temp      : num  0.344 0.363 0.196 0.2 0.227 ...
##  $ atemp     : num  0.364 0.354 0.189 0.212 0.229 ...
##  $ hum       : num  0.806 0.696 0.437 0.59 0.437 ...
##  $ windspeed : num  0.16 0.249 0.248 0.16 0.187 ...
##  $ casual    : int  331 131 120 108 82 88 148 68 54 41 ...
##  $ registered: int  654 670 1229 1454 1518 1518 1362 891 768 1280 ...
##  $ cnt       : int  985 801 1349 1562 1600 1606 1510 959 822 1321 ...

Berdasarkan struktur data, kita dapat melihat bahwa variabel season, weathersit, dan workingday sekarang merupakan faktor dengan label yang sesuai. Hal ini memudahkan dalam analisis dan visualisasi data kategorik, karena kita dapat langsung memahami kategori-kategori yang ada tanpa harus mengingat kode angka yang sebelumnya digunakan. Dengan data yang telah direcode, kita siap untuk melakukan visualisasi dan analisis lebih lanjut untuk memahami pola penggunaan sepeda berdasarkan musim, kondisi cuaca, dan jenis hari (hari kerja atau hari libur).

Visualisasi Data Kategori

Data kategorik dapat divisualisasikan menggunakan berbagai jenis grafik, seperti bar chart, pie chart, atau stacked bar chart. Visualisasi ini membantu dalam memahami distribusi dara kategori dan hubungan antara kategori-kategori tersebut.

Visualisasi Distribusi Musim

Musim adalah salah satu variabel kategorik dalam dataset bike sharing yang menunjukkan musim dalam setahun. Visualisasi distribusi musim dapat memberikan wawasan tentang bagaimana penggunaan sepeda bervariasi di setiap musim.

# Hitung jumlah pengguna sepeda untuk setiap musim
season_counts <- bike_data %>%
  group_by(season) %>%
  summarise(count = n())
# Temukan musim dengan jumlah pengguna sepeda terbanyak
max_season <- season_counts %>%
  filter(count == max(count)) %>%
  pull(season)
# Visualisasi distribusi musim dengan warna berbeda untuk musim terbanyak
ggplot(bike_data, aes(x = season)) +
  geom_bar(aes(fill = season == max_season)) +
  scale_fill_manual(values = c("steelblue", "coral"), guide = FALSE) +
  labs(title = "Distribusi Musim dalam Data Bike Sharing",
       x = "Musim",
       y = "Jumlah Pengguna Sepeda") +
  theme_minimal()

Visualisasi ini menunjukkan bagaimana data tersebar di setiap musim. Dengan menggunakan warna yang berbeda untuk musim dengan jumlah pengguna sepeda terbanyak, kita dapat dengan mudah mengidentifikasi musim mana yang memiliki permintaan sepeda tertinggi. Informasi ini dapat membantu pengelola kota dalam merencanakan layanan sepeda berdasarkan musim, seperti menambah jumlah sepeda yang tersedia selama musim dengan permintaan tinggi atau melakukan promosi khusus untuk meningkatkan penggunaan sepeda selama musim dengan permintaan rendah.

Visualisasi Distribusi Jenis Hari

Jenis hari, yang ditunjukkan oleh variabel workingday, menunjukkan apakah hari tersebut merupakan hari kerja atau hari libur. Visualisasi distribusi jenis hari dapat memberikan informasi tentang bagaimana penggunaan sepeda bervariasi antara hari kerja dan hari libur.

# Visualisasi distribusi jenis hari
ggplot(bike_data, aes(x = workingday)) +
  geom_bar(aes(fill = workingday)) +
  scale_fill_manual(values = c("Holiday" = "steelblue", "Working Day" = "coral"), name = "Waktu Pengunaan Sepeda")+
  labs(title = "Distribusi Jenis Hari dalam Data Bike Sharing",
       x = "Jenis Hari",
       y = "Jumlah Pengguna Sepeda") +
  theme_minimal()

Visualisasi di atas menunjukkan bahwa sebagian besar penggunaan sepeda terjadi pada hari kerja (Working Day), yang ditandai dengan warna coral. Sementara itu, sebagian kecil berasal dari hari libur (Holiday), yang ditandai dengan warna steelblue. Hal ini dapat memberikan informasi awal tentang pola penggunaan sepeda dalam dataset, di mana permintaan sepeda mungkin lebih tinggi pada hari kerja dibandingkan dengan hari libur. Informasi ini dapat membantu pengelola kota dalam merencanakan layanan sepeda berdasarkan jenis hari, seperti menambah jumlah sepeda yang tersedia selama hari kerja atau melakukan promosi khusus untuk meningkatkan penggunaan sepeda selama hari libur.

Selain menggunakan diagram batang (bar chart) untuk memvisualisasikan distribusi jenis hari, kita juga dapat menggunakan diagram lingkaran (pie chart) untuk memberikan perspektif yang berbeda tentang proporsi masing-masing kategori dalam keseluruhan data. Pie chart dapat memberikan gambaran yang lebih intuitif tentang bagaimana distribusi jenis hari terbagi antara hari kerja dan hari libur. Berikut adalah kode untuk membuat pie chart yang menunjukkan distribusi jenis hari dalam dataset bike sharing:

# Hitung jumlah pengguna sepeda untuk setiap kategori jenis hari
workingday_counts <- bike_data %>%
  group_by(workingday) %>%
  summarise(count = n()) %>%
  mutate(percentage = count / sum(count) * 100)
# Visualisasi distribusi jenis hari menggunakan pie chart dengan persentase
ggplot(workingday_counts, aes(x = "", y = count, fill = workingday
)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar(theta = "y") +
  scale_fill_manual(values = c("Holiday" = "steelblue", "Working Day" = "coral")) +
  geom_text(aes(label = paste0(round(percentage, 1), "%")), position = position_stack(vjust = 0.5)) +
  labs(title = "Distribusi Jenis Hari dalam Data Bike Sharing") +
  theme_void() +
  theme(legend.title = element_blank())

Visualisasi diatas menunjukkan proporsi pengunaan sepeda antara hari kerja (Working Day) dan hari libur (Holiday) dalam bentuk diagram lingkaran. Proporsi penggunan sepeda pada hari kerja sebesar 0.684 atau 68.4%, sedangkan pada hari libur sebesar 0.316 atau 31.6%. Informasi tambahan ini dapat membantu lebih lanjut dalam perencanaan layanan sepeda berdasarkan jenis hari, seperti menambah jumlah sepeda yang tersedia selama hari kerja atau melakukan promosi khusus untuk meningkatkan penggunaan sepeda selama hari libur.

Visualisasi Distribusi Kondisi Cuaca

Kondisi cuaca adalah variabel kategorik lain dalam dataset bike sharing yang menunjukkan kondisi cuaca pada hari tertentu. Visualisasi distribusi kondisi cuaca dapat memberikan informasi tentang bagaimana penggunaan sepeda bervariasi berdasarkan kondisi cuaca.

# Hitung jumlah pengguna sepeda untuk setiap kategori kondisi cuaca
weather_counts <- bike_data %>%
  group_by(weathersit) %>%
  summarise(count = n())
# Visualisasi distribusi kondisi cuaca dengan nilai pada setiap bar
ggplot(weather_counts, aes(x = weathersit, y = count, fill = weathersit)) +
  geom_bar(stat = "identity") +
  scale_fill_manual(values = c("Clear" = "coral", "Cloudy" = "steelblue", "Light Rain" = "steelblue", "Heavy Rain" = "steelblue")) +
  geom_text(aes(label = count), vjust = -0.5) +
  labs(title = "Distribusi Kondisi Cuaca dalam Data Bike Sharing",
       x = "Kondisi Cuaca",
       y = "Jumlah Pengguna Sepeda") +
  scale_y_continuous(expand = expansion(mult = c(0, 0.2))) +
  theme_minimal() +
  theme(legend.position = "none") 

Kondisi cuaca yang paling sering muncul dalam dataset adalah kondisi cerah (Clear) sebanyak 463 kali dalam setahun, diikuti oleh kondisi berawan (Cloudy) sebanyak 247 kali, kondisi hujan ringan (Light Rain) sebanyak 21 kali, dan kondisi hujan lebat atau badai (Heavy Rain) tidak terjadi. Informasi ini menjadi informasi tambahan bagi pengelola kota dalam merencanakan layanan sepeda berdasarkan kondisi cuaca, seperti menambah jumlah sepeda yang tersedia selama kondisi cuaca cerah atau melakukan promosi khusus untuk meningkatkan penggunaan sepeda selama kondisi cuaca berawan atau hujan ringan.

Visualisasi Hubungan antara Variabel Kategorik

Vsualisasi Distribusi Kondisi Cuaca berdasarkan Jenis Hari

Kondisi cuaca dapat mempengaruhi penggunaan sepeda, dan hubungan antara kondisi cuaca dan jenis hari (hari kerja atau hari libur) dapat memberikan informasi tambahan yang lebih dalam tentang pola penggunaan sepeda. Dengan menggunakan stacked bar chart, kita dapat melihat bagaimana distribusi kondisi cuaca berbeda antara hari kerja dan hari libur dalam satu grafik. Berikut adalah kode untuk membuat stacked bar chart yang menunjukkan distribusi kondisi cuaca berdasarkan jenis hari dalam dataset bike sharing:

# Visualisasi distribusi kondisi cuaca berdasarkan jenis hari menggunakan stacked bar chart
ggplot(bike_data, aes(x = weathersit, fill = workingday)) +
  geom_bar(position = "stack") +
  scale_fill_manual(values = c("Holiday" = "steelblue", "Working Day" = "coral"), name = "Hari Kerja") +
  labs(title = "Distribusi Kondisi Cuaca berdasarkan Jenis Hari dalam Data Bike Sharing",
       x = "Kondisi Cuaca", 
       y = "Jumlah Pengguna Sepeda") +
  theme_minimal()

Kondisi cuaca cerah (Clear) lebih sering terjadi pada hari kerja (Working Day) dibandingkan dengan hari libur (Holiday). Kondisi berawan (Cloudy) juga lebih sering terjadi pada hari kerja, begitu juga dengan kondisi hujan ringan (Light Rain) sering terjadi pada hari kerja. Dengan menggunakan menambahkan warna berdasarkan kategori hari kerja, kita dapat dengan mudah membedakan antara distribusi kondisi cuaca pada hari kerja dan hari libur, sehingga memberikan informasi yang lebih mendalam tentang pola penggunaan sepeda dalam berbagai kondisi cuaca.

Visualisasi Distribusi Musim berdasarkan Kondisi Cuaca

Sebelumnya, kita telah melihat visualiasi kondisi cuaca dengan jenis hari, namun kita juga dapat melihat hubungan antara musim dengan kondisi cuaca dengan menggunakan tabel kontigensi. Tabel kontingensi adalah tabel yang digunakan untuk menunjukkan frekuensi atau jumlah pengguna sepeda untuk kombinasi dari dua atau lebih variabel kategorik. Tabel ini membantu dalam memahami hubungan antara variabel-variabel tersebut. Dalam konteks dataset bike sharing, kita dapat membuat tabel kontingensi untuk melihat hubungan antara musim (season) dan kondisi cuaca (weathersit). Berikut adalah kode untuk membuat tabel kontingensi menggunakan fungsi table() di R:

# Membuat tabel kontingensi antara musim dan kondisi cuaca
contingency_table <- table(bike_data$weathersit, bike_data$season)
print(contingency_table)
##             
##              Spring Summer Fall Winter
##   Clear         111    113  136    103
##   Cloudy         66     68   48     65
##   Light Rain      4      3    4     10
##   Heavy Rain      0      0    0      0

Memvisualiasikan tabel kontingensi dapat memberikan gambaran yang lebih jelas tentang bagaimana distribusi kondisi cuaca berbeda di setiap musim. Salah satu cara untuk memvisualisasikan tabel kontingensi adalah dengan menggunakan grouped bar chart. Berikut adalah kode untuk membuat grouped bar chart yang menunjukkan distribusi musim berdasarkan kondisi cuaca dalam dataset bike sharing:

# Visualisasi distribusi musim berdasarkan kondisi cuaca menggunakan grouped bar chart
ggplot(bike_data, aes(x = season, fill = weathersit)) +
  geom_bar(position = "dodge") +
  scale_fill_manual(values = c( "Clear" = "#A7D3F2", "Cloudy" = "#B8C0C7", "Light Rain" = "#6F9AC4", "Heavy Rain" = "#2F5D7E" ), name = "Kondisi Cuaca") +
  labs(title = "Distribusi Musim berdasarkan Kondisi Cuaca dalam Data Bike Sharing",
       x = "Kondisi Cuaca",
       y = "Jumlah Pengguna Sepeda") +
  theme_minimal()

Visualisasi di atas menunjukkan distribusi musim berdasarkan kondisi cuaca dengan menggunakan grouped bar chart. Setiap kelompok bar mewakili musim yang berbeda, dan warna yang berbeda menunjukkan kondisi cuaca yang berbeda. Pada kondisi cuaca cerah (Clear) pada musim gugur (Fall) memiliki jumlah pengguna sepeda tertinggi, sedangkan pada kondisi berawan (Cloudy) disetiap musim pengguna sepeda memliki distribusi yang lebih merata, sedangkan kondisi cuaca hujan ringan (heavy rain) jumlah pengguna sepeda lebih banyak pada musim dingin (Winter) dibandingkan dengan musim lainnya. Dengan menggunakan grouped bar chart, kita dapat dengan mudah membandingkan distribusi musim di setiap kondisi cuaca, sehingga memberikan informasi yang lebih mendalam tentang pola penggunaan sepeda dalam berbagai situasi.

Selain menggunakan grouped bar chart, kita juga dapat menggunakan stacked bar chart untuk memvisualisasikan hubungan antara musim dan kondisi cuaca. Stacked bar chart menunjukkan jumlah total untuk setiap kategori pada sumbu x, dengan bagian yang berbeda dalam setiap bar mewakili jumlah dari kategori lain. Berikut adalah kode untuk membuat stacked bar chart yang menunjukkan hubungan antara musim dan kondisi cuaca dalam dataset bike sharing:

# Visualisasi hubungan antara musim dan kondisi cuaca menggunakan stacked bar chart
ggplot(bike_data, aes(x = season, fill = weathersit)) +
  geom_bar(position = "stack") +
  scale_fill_manual(values = c( "Clear" = "#A7D3F2", "Cloudy" = "#B8C0C7", "Light Rain" = "#6F9AC4", "Heavy Rain" = "#2F5D7E" ), name = "Kondisi Cuaca") +
  labs(title = "Hubungan antara Musim dan Kondisi Cuaca dalam Data Bike Sharing",
       x = "Musim",
       y = "Jumlah Pengguna Sepeda") +
  theme_minimal()

Visualisasi di atas menunjukkan hubungan antara musim dan kondisi cuaca dengan menggunakan stacked bar chart. Setiap bar mewakili musim yang berbeda, dan bagian yang berbeda dalam setiap bar mewakili jumlah pengguna sepeda untuk setiap kondisi cuaca. Pada kondisi cuaca cerah (Clear) pada musim gugur (Fall) memiliki jumlah pengguna sepeda tertinggi, sedangkan pada kondisi berawan (Cloudy) disetiap musim pengguna sepeda memliki distribusi yang lebih merata, sedangkan kondisi cuaca hujan ringan (heavy rain) jumlah pengguna sepeda lebih banyak pada musim dingin (Winter) dibandingkan dengan musim lainnya. Dengan menggunakan stacked bar chart, kita dapat dengan mudah melihat proporsi pengguna sepeda untuk setiap kondisi cuaca di setiap musim, sehingga memberikan informasi yang lebih mendalam tentang pola penggunaan sepeda dalam berbagai situasi.

Selain menggunakan grouped bar chart dan stacked bar chart, kita juga dapat menggunakan mosaic plot. Mosaic plot adalah jenis visualisasi yang menunjukkan proporsi dari setiap kategori dalam kombinasi dua variabel kategorik. Berikut adalah kode untuk membuat mosaic plot yang menunjukkan hubungan antara musim dan kondisi cuaca dalam dataset bike sharing:

# Visualisasi hubungan antara musim dan kondisi cuaca menggunakan mosaic plot
ggplot(bike_data, aes(x = season, fill = weathersit)) +
  geom_bar(position = "fill") +
  scale_fill_manual(values = c( "Clear" = "#A7D3F2", "Cloudy" = "#B8C0C7", "Light Rain" = "#6F9AC4", "Heavy Rain" = "#2F5D7E" ), name = "Kondisi Cuaca") +
  labs(title = "Hubungan antara Musim dan Kondisi Cuaca dalam Data Bike Sharing",
       x = "Musim",
       y = "Proporsi Pengguna Sepeda") +
  theme_minimal()

Pada musim semi (Spring) dan musim panas (Summer) memiliki proporsi pengguna sepeda relatif mirip untuk setiap kondisi cuaca. Pada musim gugur (Fall) memiliki proporsi pengguna sepeda paling banyak pada kondisi cuaca cerah (Clear), dan menjadi proposi pengguna sepeda tertinggi untuk setiap musim. Hal menarik lainnya, pada musim dingin (Winter) memiliki proporsi pengguna sepeda paling banyak pada kondisi cuaca hujan ringan (Light Rain), meskipun proporsi pengguna sepeda pada kondisi cuaca hujan ringan (Light Rain) lebih sedikit dibandingkan dengan kondisi cuaca cerah (Clear) dan berawan (Cloudy).

Visualisasi Distribusi Jenis Hari berdasarkan Musim

Selain melihat distribusi kondisi cuaca berdasarkan musim, kita juga dapat melihat distribusi jenis hari (hari kerja atau hari libur) berdasarkan musim. Dengan menggunakan grouped bar chart, kita dapat melihat bagaimana distribusi jenis hari berbeda di setiap musim dalam satu grafik. Berikut adalah kode untuk membuat grouped bar chart yang menunjukkan distribusi jenis hari berdasarkan musim dalam dataset bike sharing:

# Visualisasi distribusi jenis hari berdasarkan musim menggunakan grouped bar chart
ggplot(bike_data, aes(x = season, fill = workingday)) +
  geom_bar(position = "dodge") +
  scale_fill_manual(values = c("Holiday" = "steelblue", "Working Day" = "coral"), name = "Jenis Hari") +
  labs(title = "Distribusi Jenis Hari berdasarkan Musim dalam Data Bike Sharing",
       x = "Musim",
       y = "Jumlah Pengguna Sepeda") +
  theme_minimal()

Visualisasi di atas menunjukkan distribusi jenis hari berdasarkan musim dengan menggunakan grouped bar chart. Setiap kelompok bar mewakili musim yang berbeda, dan warna yang berbeda menunjukkan jenis hari yang berbeda. Pada musim semi (Spring) dan musim panas (Summer) memiliki distribusi jenis hari yang relatif mirip, dengan jumlah pengguna sepeda lebih banyak pada hari kerja (Working Day) dibandingkan dengan hari libur (Holiday). Pada musim gugur (Fall) memiliki jumlah pengguna sepeda tertinggi pada hari kerja (Working Day), sedangkan pada musim dingin (Winter) memiliki jumlah pengguna sepeda tertinggi pada hari libur (Holiday). Dengan menggunakan grouped bar chart, kita dapat dengan mudah membandingkan distribusi jenis hari di setiap musim, sehingga memberikan informasi yang lebih mendalam tentang pola penggunaan sepeda dalam berbagai situasi.

Selain menggunakan grouped bar chart, kita juga dapat menggunakan stacked bar chart untuk memvisualisasikan hubungan antara jenis hari dan musim. Stacked bar chart menunjukkan jumlah total untuk setiap kategori pada sumbu x, dengan bagian yang berbeda dalam setiap bar mewakili jumlah dari kategori lain. Berikut adalah kode untuk membuat stacked bar chart yang menunjukkan hubungan antara jenis hari dan musim dalam dataset bike sharing:

# Visualisasi hubungan antara jenis hari dan musim menggunakan stacked bar chart
ggplot(bike_data, aes(x = season, fill = workingday)) +
  geom_bar(position = "stack") +
  scale_fill_manual(values = c("Holiday" = "steelblue", "Working Day" = "coral"), name = "Jenis Hari") +
  labs(title = "Hubungan antara Jenis Hari dan Musim dalam Data Bike Sharing",
       x = "Musim",
       y = "Jumlah Pengguna Sepeda") +
  theme_minimal()

Visualisasi di atas menunjukkan hubungan antara jenis hari dan musim dengan menggunakan stacked bar chart. Setiap bar mewakili musim yang berbeda, dan bagian yang berbeda dalam setiap bar mewakili jumlah pengguna sepeda untuk setiap jenis hari. Pada musim semi (Spring) dan musim panas (Summer) memiliki distribusi jenis hari yang relatif mirip, dengan jumlah pengguna sepeda lebih banyak pada hari kerja (Working Day) dibandingkan dengan hari libur (Holiday). Pada musim gugur (Fall) memiliki jumlah pengguna sepeda tertinggi pada hari kerja (Working Day), sedangkan pada musim dingin (Winter) memiliki jumlah pengguna sepeda tertinggi pada hari libur (Holiday). Dengan menggunakan stacked bar chart, kita dapat dengan mudah melihat proporsi pengguna sepeda untuk setiap jenis hari di setiap musim, sehingga memberikan informasi yang lebih mendalam tentang pola penggunaan sepeda dalam berbagai situasi.

Kesimpulan

Berdasarkan visualiasi data kategorik atau diskrit yang telah dilakukan, kita dapat menyimpulkan bahwa:

  1. Musim gugur (Fall) memiliki jumlah pengguna sepeda tertinggi pada kondisi cuaca cerah (Clear), dan menjadi proposi pengguna sepeda tertinggi untuk setiap musim. Hal ini menunjukkan bahwa musim gugur mungkin merupakan musim yang paling populer untuk penggunaan sepeda, terutama ketika cuaca cerah.
  2. Pada musim dingin (Winter) memiliki proporsi pengguna sepeda paling banyak pada kondisi cuaca hujan ringan (Light Rain), meskipun proporsi pengguna sepeda pada kondisi cuaca hujan ringan (Light Rain) lebih sedikit dibandingkan dengan kondisi cuaca cerah (Clear) dan berawan (Cloudy). Hal ini menunjukkan bahwa meskipun kondisi cuaca hujan ringan mungkin tidak ideal untuk penggunaan sepeda, masih ada sejumlah pengguna yang tetap menggunakan sepeda selama musim dingin, terutama ketika cuaca tidak terlalu buruk.
  3. Sebagian besar penggunaan sepeda terjadi pada hari kerja (Working Day), yang ditandai dengan warna coral. Sementara itu, sebagian kecil berasal dari hari libur (Holiday), yang ditandai dengan warna steelblue. Hal ini menunjukkan bahwa permintaan sepeda mungkin lebih tinggi pada hari kerja dibandingkan dengan hari libur, yang dapat memberikan informasi awal tentang pola penggunaan sepeda dalam dataset. Informasi ini dapat membantu pengelola kota dalam merencanakan layanan sepeda berdasarkan jenis hari, seperti menambah jumlah sepeda yang tersedia selama hari kerja atau melakukan promosi khusus untuk meningkatkan penggunaan sepeda selama hari libur.

Dengan demikian, visualisasi data kategorik atau diskrit memberikan wawasan yang lebih dalam tentang pola penggunaan sepeda berdasarkan musim, kondisi cuaca, dan jenis hari. Informasi ini dapat digunakan oleh pengelola kota untuk merencanakan layanan sepeda yang lebih efektif dan sesuai dengan kebutuhan pengguna sepeda dalam berbagai situasi.