1 Tujuan Latihan

Latihan ini bertujuan untuk memperkenalkan dasar-dasar visualisasi data menggunakan ggplot2 melalui studi kasus squirrel data. Mahasiswa diharapkan mampu:

  1. Membaca dan memahami struktur data.
  2. Membuat visualisasi sederhana menggunakan ggplot2.
  3. Menggunakan aesthetic mapping seperti x, y, color, fill, dan shape.
  4. Membandingkan pola antar kelompok menggunakan visualisasi.
  5. Menulis interpretasi berdasarkan grafik.

2 Persiapan Package

library(tidyverse)

3 Membaca Data

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,…

4 Pemeriksaan Awal Data

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:

Dataset ini adalah hasil pengamatan terhadap 3.023 bari (ekor) tupai di Central Park, New York (2018). Isinya mencatat 36 kolom informasi dari setiap tupai yang ditemui, yaitu:

Lokasi: kolom long (longitude) dan lat (latitude) merekam koordinat setiap tupai yang diamati. Fisik: kolom primary_fur_color dan highlight_fur_color mencatat warna bulu utama dan highlight. Usia: kolom age membedakan tupai dewasa (Adult) dan remaja (Juvenile) Aktivitas: terdapat beberapa kolom bertipe logika (TRUE/FALSE) yang merekam perilaku tupai Sikap: kolom seperti approaches, indifferent, dan runs_from menggambarkan respons tupai terhadap kehadiran manusia.

5 1. Distribusi Warna Bulu Tupai

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:

Berdasarkan grafik batang di atas, warna bulu “gray” adalah yang paling dominan di antara populasi tupai yang diamati di Central Park, dengan jumlah lebih dari 2.000 ekor.

6 2. Distribusi Lokasi Berdasarkan Koordinat X

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:

rafik menunjukkan bahwa posisi tupai (koordinat X/longitude) tidak menyebar rata, melainkan mengelompok di area tertentu. Tupai paling banyak ditemukan pada koordinat -73.97 hingga -73.96 (Central Park bagian tengah sampai selatan). Ini mengindikasikan adanya titik kumpul tupai, mungkin karena area tersebut menyediakan lebih banyak makanan.

7 3. Sebaran Spasial Tupai

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:

Scatter plot memperlihatkan bahwa tupai tersebar di seluruh area Central Park, mengikuti bentuk memanjang dari selatan ke utara yang sesuai dengan bentuk geografis taman tersebut. Titik-titik pengamatan relatif tersebar merata, namun terlihat sedikit lebih padat di bagian tengah dan selatan taman. Tidak ada kluster yang sangat terisolasi, yang berarti tupai hadir di hampir semua bagian taman.

8 4. Sebaran Spasial Berdasarkan Warna Bulu

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:

Scatter plot dengan pewarnaan bulu menunjukkan bahwa tidak ada pemisahan wilayah yang jelas antar-populasi tupai. Variasi warna abu-abu (Gray), kayu manis (Cinnamon), dan hitam (Black) tampak membaur di seluruh area Central Park tanpa membentuk kelompok di zona tertentu.

9 5. Perbandingan Perilaku Chasing Berdasarkan Warna Bulu

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:

Grafik batang proporsional menunjukkan bahwa intensitas perilaku mengejar (chasing) relatif kecil di semua kelompok warna bulu, dengan mayoritas data bernilai FALSE. Secara visual, perbedaan proporsi antar-kelompok tidak terlalu signifikan. Meskipun tupai berwarna Cinnamon menunjukkan kecenderungan chasing yang sedikit lebih tinggi dibanding Gray dan Black, selisihnya sangat tipis. Hal ini mengindikasikan bahwa warna bulu bukan faktor penentu perilaku tersebut

10 6. Perilaku Eating Berdasarkan Kelompok Umur

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:

Grafik menunjukkan bahwa proporsi perilaku makan (eating = TRUE) sedikit lebih tinggi pada kelompok Juvenile dibandingkan Adult. Hal ini mengindikasikan bahwa tupai muda cenderung lebih aktif mengonsumsi makanan, kemungkinan demi memenuhi kebutuhan energi untuk pertumbuhan.

11 7. Faceting: Sebaran Spasial Berdasarkan Kelompok Umur

Gunakan facet_wrap() untuk membandingkan sebaran lokasi tupai berdasarkan umur.

ggplot(squirrel, aes(x = long, y = lat)) +
  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:

Facet plot menunjukkan bahwa populasi tupai Adult jauh lebih mendominasi dan tersebar luas di seluruh Central Park dibandingkan kelompok Juvenile. Meskipun demikian, pola spasial keduanya serupa—mengikuti bentuk taman dari selatan ke utara—tanpa adanya zona eksklusif untuk kelompok umur tertentu.

12 8. Aesthetic Mapping: Warna dan Bentuk

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:

Penggunaan dua aesthetic sekaligus (warna untuk warna bulu dan bentuk untuk kelompok umur) berhasil menyajikan dua dimensi informasi dalam satu grafik. Dari visualisasi ini, dapat disimpulkan bahwa: A) Semua kombinasi warna bulu dan kelompok umur tersebar merata, menegaskan tidak adanya pemisahan wilayah berdasarkan kedua variabel tersebut. B) Titik Juvenile (segitiga) jumlahnya lebih sedikit dan membaur secara acak di antara titik Adult (lingkaran) tanpa membentuk kelompok khusus. C) Grafik ini mencerminkan tingginya keragaman populasi tupai di Central Park yang hidup berdampingan di ruang yang sama.

13 9. Visualisasi Pilihan Mahasiswa

Buat satu visualisasi tambahan berdasarkan pertanyaan analitis yang Anda susun sendiri.

Contoh pertanyaan:

# Filter data agar hanya menyertakan kelompok umur Adult dan Juvenile
squirrel_clean <- squirrel %>%
  filter(age %in% c("Adult", "Juvenile")) %>%
  mutate(
    human_response = case_when(
      approaches == TRUE ~ "Approaches Human",
      runs_from == TRUE ~ "Runs From Human",
      TRUE ~ "Indifferent"
    )
  )

ggplot(squirrel_clean, aes(x = human_response, fill = running)) +
  geom_bar(position = "fill") +
  facet_wrap(~ age) +
  labs(
    title = "Running Behavior by Human Interaction Type and Age Group",
    x = "Response to Human",
    y = "Proportion",
    fill = "Running"
  ) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 15, hjust = 1))

Pertanyaan Analitis:

Apakah tujuan perilaku running berbeda antara tupai terhadap manusia berdasarkan kelompok umur?

Interpretasi:

Visualisasi ini mengintegrasikan tiga variabel: perilaku berlari (running), respons terhadap manusia, dan kelompok umur. Dari grafik tersebut, dapat disimpulkan bahwa: A) Tupai yang menghindar (runs_from) memiliki proporsi perilaku running = TRUE yang paling tinggi di kedua kelompok umur. Secara biologis hal ini valid, karena tindakan menghindar umumnya memicu respons berlari. B) Tupai yang mendekat (approaches) atau acuh (indifferent) menunjukkan proporsi berlari yang jauh lebih rendah (Juvenile), mengindikasikan kondisi yang lebih tenang atau adaptif di sekitar manusia. C) Pla ini konsisten antara Adult dan Juvenile, menunjukkan bahwa respons perilaku terhadap manusia tidak banyak berbeda berdasarkan kelompok umur.o

14 10. Kesimpulan

Tuliskan 3–5 insight utama yang diperoleh dari visualisasi squirrel data.

Kesimpulan:

  1. Dominasi Warna Abu-abu. Tupai berwarna abu-abu (Gray) paling mendominasi di Central Park

  2. Sebaran Wilayah Merata, Seluruh populasi tupai tersebar merata mengikuti area taman tanpa adanya pemisahan wilayah (segregasi) berdasarkan warna bulu ataupun kelompok umur.

  3. Aktivitas Spesifik Kelompok, Perilaku mengejar (chasing) tergolong rendah di semua kelompok. Sebaliknya, aktivitas makan sedikit lebih tinggi pada kelompok Juvenile, diduga karena kebutuhan energi untuk pertumbuhan.

  4. Dominasi Data Dewasa, Kelompok Adult jauh lebih banyak ditemukan dan diidentifikasi dibandingkan Juvenile

  5. Respons Manusia Memicu Refleks Berlari, Tupai yang menghindar (runs_from) memiliki kecenderungan berlari yang sangat tinggi. Pola ini konsisten di semua kelompok umur, menunjukkan bahwa kehadiran manusia menjadi faktor utama yang memengaruhi pergerakan mereka.

15 Catatan Pengumpulan

Kumpulkan file dalam format HTML. Pastikan dokumen memuat:

  1. Kode R.
  2. Output grafik.
  3. Interpretasi setiap grafik.
  4. Kesimpulan akhir.
  5. [BONUS] Publish di Rpubs! Berikan link Rpubs Anda, dan saya akan berkunjung untuk melihat-lihat. Kalian bisa mulai dari sini: https://rpubs.com/about/getting-started.