Latihan ini bertujuan untuk memperkenalkan dasar-dasar visualisasi
data menggunakan ggplot2 melalui studi kasus
squirrel data. Mahasiswa diharapkan mampu:
ggplot2.x,
y, color, fill, dan
shape.library(tidyverse)
Gunakan file data squirrel dalam format .csv. Pastikan
file berada pada folder kerja yang sama dengan file R Markdown ini.
squirrels_url <- paste0("https://raw.githubusercontent.com/rfordatascience/tidytuesday/",
"master/data/2019/2019-10-29/nyc_squirrels.csv")
squirrel <- read.csv(squirrels_url)
glimpse(squirrel)
## Rows: 3,023
## Columns: 36
## $ long <dbl> -73.95613, -73.95704, -73.9…
## $ lat <dbl> 40.79408, 40.79485, 40.7667…
## $ unique_squirrel_id <chr> "37F-PM-1014-03", "37E-PM-1…
## $ hectare <chr> "37F", "37E", "02E", "05D",…
## $ shift <chr> "PM", "PM", "AM", "PM", "AM…
## $ date <int> 10142018, 10062018, 1010201…
## $ hectare_squirrel_number <int> 3, 3, 3, 5, 1, 2, 2, 3, 9, …
## $ age <chr> NA, "Adult", "Adult", "Juve…
## $ primary_fur_color <chr> NA, "Gray", "Cinnamon", "Gr…
## $ highlight_fur_color <chr> NA, "Cinnamon", NA, NA, NA,…
## $ combination_of_primary_and_highlight_color <chr> "+", "Gray+Cinnamon", "Cinn…
## $ color_notes <chr> NA, NA, NA, NA, NA, NA, NA,…
## $ location <chr> NA, "Ground Plane", "Above …
## $ above_ground_sighter_measurement <chr> NA, "FALSE", "4", "3", NA, …
## $ specific_location <chr> NA, NA, NA, NA, NA, NA, NA,…
## $ running <lgl> FALSE, TRUE, FALSE, FALSE, …
## $ chasing <lgl> FALSE, FALSE, FALSE, FALSE,…
## $ climbing <lgl> FALSE, FALSE, TRUE, TRUE, F…
## $ eating <lgl> FALSE, FALSE, FALSE, FALSE,…
## $ foraging <lgl> FALSE, FALSE, FALSE, FALSE,…
## $ other_activities <chr> NA, NA, NA, NA, "unknown", …
## $ kuks <lgl> FALSE, FALSE, FALSE, FALSE,…
## $ quaas <lgl> FALSE, FALSE, FALSE, FALSE,…
## $ moans <lgl> FALSE, FALSE, FALSE, FALSE,…
## $ tail_flags <lgl> FALSE, FALSE, FALSE, FALSE,…
## $ tail_twitches <lgl> FALSE, FALSE, FALSE, FALSE,…
## $ approaches <lgl> FALSE, FALSE, FALSE, FALSE,…
## $ indifferent <lgl> FALSE, FALSE, TRUE, FALSE, …
## $ runs_from <lgl> FALSE, TRUE, FALSE, TRUE, F…
## $ other_interactions <chr> NA, "me", NA, NA, NA, NA, N…
## $ lat_long <chr> "POINT (-73.9561344937861 4…
## $ zip_codes <int> NA, NA, NA, NA, NA, NA, NA,…
## $ community_districts <int> 19, 19, 19, 19, 19, 19, 19,…
## $ borough_boundaries <int> 4, 4, 4, 4, 4, 4, 4, 4, 4, …
## $ city_council_districts <int> 19, 19, 19, 19, 19, 19, 19,…
## $ police_precincts <int> 13, 13, 13, 13, 13, 13, 13,…
names(squirrel)
## [1] "long"
## [2] "lat"
## [3] "unique_squirrel_id"
## [4] "hectare"
## [5] "shift"
## [6] "date"
## [7] "hectare_squirrel_number"
## [8] "age"
## [9] "primary_fur_color"
## [10] "highlight_fur_color"
## [11] "combination_of_primary_and_highlight_color"
## [12] "color_notes"
## [13] "location"
## [14] "above_ground_sighter_measurement"
## [15] "specific_location"
## [16] "running"
## [17] "chasing"
## [18] "climbing"
## [19] "eating"
## [20] "foraging"
## [21] "other_activities"
## [22] "kuks"
## [23] "quaas"
## [24] "moans"
## [25] "tail_flags"
## [26] "tail_twitches"
## [27] "approaches"
## [28] "indifferent"
## [29] "runs_from"
## [30] "other_interactions"
## [31] "lat_long"
## [32] "zip_codes"
## [33] "community_districts"
## [34] "borough_boundaries"
## [35] "city_council_districts"
## [36] "police_precincts"
summary(squirrel)
## long lat unique_squirrel_id hectare
## Min. :-73.98 Min. :40.76 Length:3023 Length:3023
## 1st Qu.:-73.97 1st Qu.:40.77 Class :character Class :character
## Median :-73.97 Median :40.78 Mode :character Mode :character
## Mean :-73.97 Mean :40.78
## 3rd Qu.:-73.96 3rd Qu.:40.79
## Max. :-73.95 Max. :40.80
##
## shift date hectare_squirrel_number
## Length:3023 Min. :10062018 Min. : 1.000
## Class :character 1st Qu.:10082018 1st Qu.: 2.000
## Mode :character Median :10122018 Median : 3.000
## Mean :10119487 Mean : 4.124
## 3rd Qu.:10142018 3rd Qu.: 6.000
## Max. :10202018 Max. :23.000
##
## age primary_fur_color highlight_fur_color
## Length:3023 Length:3023 Length:3023
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
##
## combination_of_primary_and_highlight_color color_notes
## Length:3023 Length:3023
## Class :character Class :character
## Mode :character Mode :character
##
##
##
##
## location above_ground_sighter_measurement specific_location
## Length:3023 Length:3023 Length:3023
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
##
## running chasing climbing eating
## Mode :logical Mode :logical Mode :logical Mode :logical
## FALSE:2293 FALSE:2744 FALSE:2365 FALSE:2263
## TRUE :730 TRUE :279 TRUE :658 TRUE :760
##
##
##
##
## foraging other_activities kuks quaas
## Mode :logical Length:3023 Mode :logical Mode :logical
## FALSE:1588 Class :character FALSE:2921 FALSE:2973
## TRUE :1435 Mode :character TRUE :102 TRUE :50
##
##
##
##
## moans tail_flags tail_twitches approaches
## Mode :logical Mode :logical Mode :logical Mode :logical
## FALSE:3020 FALSE:2868 FALSE:2589 FALSE:2845
## TRUE :3 TRUE :155 TRUE :434 TRUE :178
##
##
##
##
## indifferent runs_from other_interactions lat_long
## Mode :logical Mode :logical Length:3023 Length:3023
## FALSE:1569 FALSE:2345 Class :character Class :character
## TRUE :1454 TRUE :678 Mode :character Mode :character
##
##
##
##
## zip_codes community_districts borough_boundaries city_council_districts
## Min. :10090 Min. :11 Min. :4 Min. :19.00
## 1st Qu.:12081 1st Qu.:19 1st Qu.:4 1st Qu.:19.00
## Median :12420 Median :19 Median :4 Median :19.00
## Mean :11828 Mean :19 Mean :4 Mean :19.07
## 3rd Qu.:12423 3rd Qu.:19 3rd Qu.:4 3rd Qu.:19.00
## Max. :12423 Max. :23 Max. :4 Max. :51.00
## NA's :3014
## police_precincts
## Min. :10
## 1st Qu.:13
## Median :13
## Mean :13
## 3rd Qu.:13
## Max. :18
##
Interpretasi:
Dataset nyc_squirrels merupakan hasil survei tupai di
Central Park, New York City pada tahun 2018. Dataset ini memiliki 3.023
baris observasi dan 36 kolom variabel. Variabel-variabel yang tersedia
mencakup: koordinat geografis (long, lat),
karakteristik fisik tupai seperti warna bulu utama
(primary_fur_color) dan warna bulu bagian atas
(highlight_fur_color), kelompok umur (age),
serta perilaku yang diamati seperti running,
chasing, climbing, eating, dan
foraging. Terdapat pula variabel terkait interaksi dengan
manusia seperti approaches, indifferent, dan
runs_from. Beberapa variabel bertipe logis (TRUE/FALSE) dan
ada beberapa nilai kosong (NA) pada kolom seperti
primary_fur_color dan age.
Buat grafik batang untuk melihat warna bulu tupai yang paling banyak ditemukan.
ggplot(squirrel, aes(x = primary_fur_color)) +
geom_bar(fill = "steelblue") +
labs(
title = "Distribution of Squirrel Fur Color",
x = "Fur Color",
y = "Count"
) +
theme_minimal()
Pertanyaan:
Warna bulu apa yang paling dominan?
Interpretasi:
Berdasarkan grafik batang di atas, warna bulu Gray (abu-abu) merupakan warna yang paling dominan pada populasi tupai di Central Park, dengan jumlah observasi yang jauh lebih banyak dibandingkan warna lainnya. Warna Cinnamon (coklat kemerahan) menempati posisi kedua, sementara warna Black (hitam) adalah yang paling sedikit ditemukan. Terdapat juga sejumlah kecil observasi tanpa data warna bulu (NA).
Gunakan histogram untuk melihat penyebaran tupai berdasarkan koordinat X.
ggplot(squirrel, aes(x = long)) +
geom_histogram(bins = 30, fill = "darkorange", color = "white") +
labs(
title = "Distribution of Squirrel Location Based on X Coordinate",
x = "X Coordinate (Longitude)",
y = "Frequency"
) +
theme_minimal()
Pertanyaan:
Apakah lokasi pengamatan tupai terkonsentrasi pada area tertentu?
Interpretasi:
Ya, lokasi pengamatan tupai tidak tersebar merata. Berdasarkan histogram, terlihat adanya beberapa puncak frekuensi yang menunjukkan konsentrasi lokasi pengamatan pada rentang longitude tertentu, yaitu sekitar -73.97 hingga -73.96. Hal ini mengindikasikan bahwa terdapat area-area tertentu di Central Park yang menjadi lokasi favorit atau lebih mudah diakses untuk pengamatan tupai, kemungkinan besar karena ketersediaan makanan atau vegetasi yang lebih lebat di area tersebut.
Buat scatter plot untuk menggambarkan lokasi tupai berdasarkan
koordinat x dan y.
ggplot(squirrel, aes(x = long, y = lat)) +
geom_point(alpha = 0.4, size = 1, color = "steelblue") +
labs(
title = "Spatial Distribution of Squirrels",
x = "Longitude",
y = "Latitude"
) +
theme_minimal()
Pertanyaan:
Bagaimana pola sebaran tupai secara spasial?
Interpretasi:
Pola sebaran tupai secara spasial mengikuti bentuk memanjang dari selatan ke utara, yang mencerminkan bentuk geografis Central Park itu sendiri. Titik-titik pengamatan tersebar di seluruh area taman, namun terdapat beberapa klaster (kelompok) yang lebih padat di area tertentu. Sebaran ini tidak sepenuhnya merata — beberapa zona lebih jarang ditemukan tupai, kemungkinan karena area tersebut lebih terbuka (seperti lapangan atau danau) yang kurang cocok sebagai habitat tupai.
Tambahkan warna pada scatter plot berdasarkan
primary_fur_color.
ggplot(squirrel, aes(x = long, y = lat, color = primary_fur_color)) +
geom_point(alpha = 0.5, size = 1) +
scale_color_manual(
values = c("Gray" = "gray50", "Cinnamon" = "chocolate3", "Black" = "black"),
na.value = "lightpink"
) +
labs(
title = "Spatial Distribution of Squirrels by Fur Color",
x = "Longitude",
y = "Latitude",
color = "Fur Color"
) +
theme_minimal()
Pertanyaan:
Apakah warna bulu tertentu cenderung muncul pada area tertentu?
Interpretasi:
Berdasarkan scatter plot berwarna ini, warna bulu Gray mendominasi hampir di seluruh area Central Park secara merata, konsisten dengan jumlahnya yang terbanyak. Warna Cinnamon dan Black tersebar di antara tupai abu-abu tanpa pola lokasi yang sangat jelas. Dengan demikian, tidak terdapat bukti kuat bahwa warna bulu tertentu secara konsisten mengelompok di area geografis yang berbeda — ketiga warna bulu tampak bercampur di seluruh kawasan taman.
Gunakan stacked proportional bar chart untuk melihat proporsi
perilaku chasing berdasarkan warna bulu.
ggplot(squirrel, aes(x = primary_fur_color, fill = chasing)) +
geom_bar(position = "fill") +
scale_fill_manual(values = c("TRUE" = "tomato", "FALSE" = "steelblue"),
na.value = "gray80") +
labs(
title = "Chasing Behavior by Fur Color",
x = "Fur Color",
y = "Proportion",
fill = "Chasing"
) +
theme_minimal()
Pertanyaan:
Apakah terdapat perbedaan proporsi perilaku chasing antar warna bulu?
Interpretasi:
Berdasarkan grafik batang proporsional, proporsi perilaku chasing (mengejar) relatif kecil pada semua kelompok warna bulu. Secara visual, tidak terdapat perbedaan yang sangat mencolok antar kelompok warna bulu — ketiganya menunjukkan proporsi chasing yang serupa dan rendah (sekitar 5–10%). Hal ini mengindikasikan bahwa warna bulu tidak berkaitan kuat dengan kecenderungan tupai untuk mengejar satu sama lain.
Gunakan grafik batang proporsional untuk melihat perilaku makan berdasarkan kelompok umur.
squirrel_age_clean <- squirrel %>%
filter(!is.na(age), age != "?")
ggplot(squirrel_age_clean, aes(x = age, fill = eating)) +
geom_bar(position = "fill") +
scale_fill_manual(values = c("TRUE" = "forestgreen", "FALSE" = "gray70"),
na.value = "gray90") +
labs(
title = "Eating Behavior by Age Group",
x = "Age Group",
y = "Proportion",
fill = "Eating"
) +
theme_minimal()
Pertanyaan:
Apakah perilaku makan berbeda antara adult dan juvenile squirrels?
Interpretasi:
Berdasarkan grafik, terdapat sedikit perbedaan proporsi perilaku makan antara tupai dewasa (Adult) dan tupai muda (Juvenile). Tupai dewasa menunjukkan proporsi perilaku makan yang sedikit lebih tinggi dibandingkan tupai muda. Ini mungkin dapat dijelaskan oleh fakta bahwa tupai dewasa memiliki kebutuhan energi yang lebih besar dan lebih berpengalaman dalam mencari makan, sedangkan tupai muda mungkin lebih banyak menghabiskan waktu untuk eksplorasi dan bermain.
Gunakan facet_wrap() untuk membandingkan sebaran lokasi
tupai berdasarkan umur.
squirrel_age_clean <- squirrel %>%
filter(!is.na(age), age != "?")
ggplot(squirrel_age_clean, aes(x = long, y = lat)) +
geom_point(alpha = 0.4, size = 1, color = "darkorchid") +
facet_wrap(~ age) +
labs(
title = "Spatial Distribution of Squirrels by Age Group",
x = "Longitude",
y = "Latitude"
) +
theme_minimal()
Pertanyaan:
Apakah adult dan juvenile squirrels memiliki pola lokasi yang berbeda?
Interpretasi:
Berdasarkan facet plot, pola sebaran spasial antara tupai dewasa (Adult) dan tupai muda (Juvenile) terlihat serupa — keduanya tersebar di seluruh area Central Park mengikuti pola memanjang taman. Namun, jumlah observasi untuk tupai dewasa jauh lebih banyak dibandingkan juvenile, sehingga panel Adult terlihat lebih padat. Tidak terdapat indikasi kuat bahwa tupai muda terpusat di area khusus yang berbeda dari tupai dewasa, meskipun kepadatan di beberapa sub-area mungkin sedikit berbeda.
Gunakan color untuk warna bulu dan shape
untuk kelompok umur.
squirrel_clean <- squirrel %>%
filter(!is.na(primary_fur_color), !is.na(age), age != "?")
ggplot(squirrel_clean, aes(
x = long,
y = lat,
color = primary_fur_color,
shape = age
)) +
geom_point(size = 2, alpha = 0.6) +
scale_color_manual(values = c("Gray" = "gray50", "Cinnamon" = "chocolate3", "Black" = "black")) +
labs(
title = "Squirrel Location by Fur Color and Age",
x = "Longitude",
y = "Latitude",
color = "Fur Color",
shape = "Age"
) +
theme_minimal()
Pertanyaan:
Informasi tambahan apa yang diperoleh ketika warna dan bentuk digunakan secara bersamaan?
Interpretasi:
Dengan menggunakan dua aesthetic sekaligus — warna untuk warna bulu dan bentuk untuk kelompok umur — kita dapat membaca dua dimensi informasi dari satu grafik. Hasilnya menunjukkan bahwa distribusi spasial tupai dewasa dan muda tampak tumpang tindih di hampir seluruh area, dan tidak ada warna bulu tertentu yang eksklusif muncul pada kelompok umur tertentu. Pendekatan multi-aesthetic ini sangat berguna untuk mendeteksi interaksi antar variabel kategorik dalam konteks spasial secara efisien.
Pertanyaan Analitis:
Apakah tupai yang sedang mencari makan (foraging) cenderung ditemukan pada area spasial yang berbeda dibandingkan tupai yang tidak sedang foraging?
ggplot(squirrel, aes(x = long, y = lat, color = foraging)) +
geom_point(alpha = 0.4, size = 1) +
scale_color_manual(
values = c("TRUE" = "darkorange", "FALSE" = "lightblue"),
labels = c("TRUE" = "Foraging", "FALSE" = "Not Foraging"),
na.value = "gray80"
) +
labs(
title = "Spatial Distribution of Squirrels by Foraging Behavior",
subtitle = "Orange = sedang foraging, Biru = tidak foraging",
x = "Longitude",
y = "Latitude",
color = "Foraging"
) +
theme_minimal()
Interpretasi:
Berdasarkan visualisasi ini, tupai yang sedang melakukan foraging (mencari makan) tersebar hampir di seluruh area Central Park, tidak terpusat pada satu zona saja. Titik-titik oranye (foraging) bercampur dengan titik biru di semua bagian taman, yang mengindikasikan bahwa aktivitas mencari makan terjadi secara merata di seluruh kawasan. Ini mungkin mencerminkan bahwa sumber makanan (biji-bijian, kacang, dll.) tersedia secara luas di taman, sehingga perilaku foraging tidak terikat pada lokasi spesifik.
Kesimpulan:
Dominasi tupai abu-abu: Warna bulu Gray (abu-abu) merupakan yang paling umum ditemukan di Central Park, jauh melampaui warna Cinnamon dan Black, yang mencerminkan komposisi genetik populasi tupai di kawasan tersebut.
Distribusi spasial mengikuti bentuk taman: Sebaran geografis tupai secara keseluruhan mengikuti bentuk memanjang Central Park dari selatan ke utara, dengan beberapa area yang lebih padat populasinya, kemungkinan terkait ketersediaan habitat dan makanan.
Warna bulu tidak menentukan lokasi atau perilaku dominan: Tidak ditemukan bukti kuat bahwa warna bulu tertentu cenderung mengelompok di area geografis tertentu, maupun memiliki perbedaan mencolok dalam perilaku seperti chasing atau foraging.
Perbedaan perilaku makan antar kelompok umur bersifat marginal: Tupai dewasa sedikit lebih sering terlihat makan dibandingkan tupai muda, namun perbedaannya tidak dramatis, kemungkinan karena keduanya sama-sama aktif mencari makanan di lingkungan yang sama.
Perilaku foraging tersebar merata: Aktivitas mencari makan (foraging) tidak terpusat di lokasi tertentu, melainkan terjadi di seluruh penjuru taman, yang menunjukkan bahwa sumber daya makanan terdistribusi secara relatif merata di Central Park.
Kumpulkan file dalam format HTML. Pastikan dokumen memuat: