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
##
Tuliskan penjelasan singkat mengenai struktur data.
Interpretasi:
Data ini berisi 3.023 catatan observasi tupai yang merangkum 4 hal utama: 1. Identitas & Fisik (Teks): ID unik tupai, perkiraan usia, dan warna bulunya. 2. Waktu & Lokasi (Angka): Tanggal observasi, titik koordinat peta (garis lintang/bujur), dan kode wilayah. (Catatan: kolom kode pos hampir semuanya kosong/NA). 3. Perilaku & Aktivitas (TRUE/FALSE): Checklist apakah tupai tersebut sedang berlari, memanjat, makan, mencari makan, atau bersuara. 4. Interaksi dengan Manusia (TRUE/FALSE): Reaksi tupai saat diamati, apakah ia mendekat, lari menjauh, atau cuek.
Buat grafik batang untuk melihat warna bulu tupai yang paling banyak ditemukan.
ggplot(squirrel, aes(x = primary_fur_color)) +
geom_bar() +
labs(
title = "Distribution of Squirrel Fur Color",
x = "Fur Color",
y = "Count"
) +
theme_minimal()
Pertanyaan:
Warna bulu apa yang paling dominan?
Interpretasi:
Dari tabel data diatas, warna bulu abu-abu yang paling dominan.
Gunakan histogram untuk melihat penyebaran tupai berdasarkan koordinat X.
ggplot(squirrel, aes(x = long)) +
geom_histogram(bins = 30) +
labs(
title = "Distribution of Squirrel Location Based on X Coordinate",
x = "X Coordinate",
y = "Frequency"
) +
theme_minimal()
Pertanyaan:
Apakah lokasi pengamatan tupai terkonsentrasi pada area tertentu?
Interpretasi:
Konsentrasi tertinggi berada di sekitar koordinat X -73.97. Puncak grafik tertinggi berada di area ini dengan frekuensi pengamatan menembus angka 200, yang menandakan ini adalah area di mana tupai paling sering terlihat.
Buat scatter plot untuk menggambarkan lokasi tupai berdasarkan
koordinat x dan y.
ggplot(squirrel, aes(x = long, y = lat)) +
geom_point(alpha = 0.6) +
labs(
title = "Spatial Distribution of Squirrels",
x = "X Coordinate",
y = "Y Coordinate"
) +
theme_minimal()
Pertanyaan:
Bagaimana pola sebaran tupai secara spasial?
Interpretasi:
Tupai terlihat menyebar di hampir seluruh wilayah taman dari ujung ke ujung. Namun, kepadatannya tidak sama, ada area yang titik-titiknya sangat pekat (bergerombol/clustering), yang menunjukkan habitat favorit mereka (seperti area banyak pohon).
Tambahkan warna pada scatter plot berdasarkan
primary_fur_color.
ggplot(squirrel, aes(x = long, y = lat, color = primary_fur_color)) +
geom_point(alpha = 0.6) +
labs(
title = "Spatial Distribution of Squirrels by Fur Color",
x = "X Coordinate",
y = "Y Coordinate",
color = "Fur Color"
) +
theme_minimal()
Pertanyaan:
Apakah warna bulu tertentu cenderung muncul pada area tertentu?
Interpretasi:
Berdasarkan scatter plot tersebut, tidak terlihat adanya pembagian wilayah atau pengelompokan yang eksklusif berdasarkan warna bulu. Tupai dengan berbagai warna bulu cenderung berbaur dan berbagi ruang yang sama.
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") +
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 (stacked bar chart) tersebut, tidak terdapat perbedaan proporsi yang signifikan mengenai perilaku chasing (mengejar) antar kelompok warna bulu.
Gunakan grafik batang proporsional untuk melihat perilaku makan berdasarkan kelompok umur.
ggplot(squirrel, aes(x = age, fill = eating)) +
geom_bar(position = "fill") +
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:
Tupai Dewasa (Adult): Proporsi tupai dewasa yang diamati sedang makan (area berwarna biru kehijauan/TRUE) berada di angka sekitar 0.25 (25%). Tupai Muda (Juvenile): Proporsi tupai muda yang diamati sedang makan terlihat sedikit lebih tinggi, yakni berada di kisaran angka 0.30 (30%).
Gunakan facet_wrap() untuk membandingkan sebaran lokasi
tupai berdasarkan umur.
ggplot(squirrel, aes(x = long, y = long)) +
geom_point(alpha = 0.5) +
facet_wrap(~ age) +
labs(
title = "Spatial Distribution of Squirrels by Age Group",
x = "X Coordinate",
y = "Y Coordinate"
) +
theme_minimal()
Pertanyaan:
Apakah adult dan juvenile squirrels memiliki pola lokasi yang berbeda?
Interpretasi:
Berdasarkan grafik scatter plot tersebut, tupai dewasa (adult) dan tupai muda (juvenile) tidak memiliki pola lokasi yang berbeda. Satu-satunya hal yang membedakan kedua grafik tersebut adalah kepadatan atau jumlah titiknya. Panel Adult terlihat sebagai garis hitam tebal dan solid karena jumlah observasi tupai dewasa jauh lebih banyak. Sementara itu, panel Juvenile membentuk garis pada jalur yang sama namun lebih putus-putus atau renggang karena jumlah tupai muda yang diamati lebih sedikit.
Gunakan color untuk warna bulu dan shape
untuk kelompok umur.
ggplot(squirrel, aes(
x = long,
y = lat,
color = primary_fur_color,
shape = age
)) +
geom_point(size = 2, alpha = 0.7) +
labs(
title = "Squirrel Location by Fur Color and Age",
x = "X Coordinate",
y = "Y Coordinate",
color = "Fur Color",
shape = "Age"
) +
theme_minimal()
## Warning: Removed 121 rows containing missing values or values outside the scale range
## (`geom_point()`).
Pertanyaan:
Informasi tambahan apa yang diperoleh ketika warna dan bentuk digunakan secara bersamaan?
Interpretasi:
Buat satu visualisasi tambahan berdasarkan pertanyaan analitis yang Anda susun sendiri.
Contoh pertanyaan:
ggplot(squirrel, aes(x = age, fill = foraging)) +
geom_bar(position = "fill") +
labs(
title = "Foraging Behavior by Age Group",
x = "Age Group",
y = "Proportion",
fill = "Foraging"
) +
theme_minimal()
Pertanyaan Analitis:
Apakah proporsi perilaku mencari makan (foraging) berbeda antara kelompok umur tupai?
Interpretasi:
Berdasarkan grafik batang proporsional di atas, tupai dewasa (Adult) memiliki proporsi perilaku mencari makan (foraging) yang lebih tinggi dibandingkan tupai muda (Juvenile). Sekitar 50% (proporsi 0.50) dari total observasi pada kelompok dewasa menunjukkan mereka sedang mencari makan. Sementara itu, pada kelompok tupai muda, aktivitas mencari makan hanya terlihat pada sekitar 35% (proporsi ~0.35) dari total observasi mereka.
Tuliskan 3–5 insight utama yang diperoleh dari visualisasi squirrel data.
Kesimpulan:
Kumpulkan file dalam format HTML. Pastikan dokumen memuat: