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   N.unique :3018     N.unique : 339  
##  Median :-73.97   Median :40.78   N.blank  :   0     N.blank  :   0  
##  Mean   :-73.97   Mean   :40.78   Min.nchar:  13     Min.nchar:   3  
##  3rd Qu.:-73.96   3rd Qu.:40.79   Max.nchar:  14     Max.nchar:   3  
##  Max.   :-73.95   Max.   :40.80                                      
##                                                                      
##        shift           date          hectare_squirrel_number        age      
##  Length   :3023   Min.   :10062018   Min.   : 1.000          Length   :3023  
##  N.unique :   2   1st Qu.:10082018   1st Qu.: 2.000          N.unique :   3  
##  N.blank  :   0   Median :10122018   Median : 3.000          N.blank  :   0  
##  Min.nchar:   2   Mean   :10119487   Mean   : 4.124          Min.nchar:   1  
##  Max.nchar:   2   3rd Qu.:10142018   3rd Qu.: 6.000          Max.nchar:   8  
##                   Max.   :10202018   Max.   :23.000          NAs      : 121  
##                                                                              
##  primary_fur_color highlight_fur_color
##  Length   :3023    Length   :3023     
##  N.unique :   3    N.unique :  10     
##  N.blank  :   0    N.blank  :   0     
##  Min.nchar:   4    Min.nchar:   4     
##  Max.nchar:   8    Max.nchar:  22     
##  NAs      :  55    NAs      :1086     
##                                       
##  combination_of_primary_and_highlight_color    color_notes        location   
##  Length   :3023                             Length   :3023   Length   :3023  
##  N.unique :  22                             N.unique : 135   N.unique :   2  
##  N.blank  :   0                             N.blank  :   0   N.blank  :   0  
##  Min.nchar:   1                             Min.nchar:   3   Min.nchar:  12  
##  Max.nchar:  27                             Max.nchar: 153   Max.nchar:  12  
##                                             NAs      :2841   NAs      :  64  
##                                                                              
##  above_ground_sighter_measurement specific_location  running       
##  Length   :3023                   Length   :3023    Mode :logical  
##  N.unique :  41                   N.unique : 304    FALSE:2293     
##  N.blank  :   0                   N.blank  :   0    TRUE :730      
##  Min.nchar:   1                   Min.nchar:   4                   
##  Max.nchar:   5                   Max.nchar: 102                   
##  NAs      : 114                   NAs      :2547                   
##                                                                    
##   chasing         climbing         eating         foraging      
##  Mode :logical   Mode :logical   Mode :logical   Mode :logical  
##  FALSE:2744      FALSE:2365      FALSE:2263      FALSE:1588     
##  TRUE :279       TRUE :658       TRUE :760       TRUE :1435     
##                                                                 
##                                                                 
##                                                                 
##                                                                 
##   other_activities    kuks           quaas           moans        
##  Length   :3023    Mode :logical   Mode :logical   Mode :logical  
##  N.unique : 307    FALSE:2921      FALSE:2973      FALSE:3020     
##  N.blank  :   0    TRUE :102       TRUE :50        TRUE :3        
##  Min.nchar:   4                                                   
##  Max.nchar: 132                                                   
##  NAs      :2586                                                   
##                                                                   
##  tail_flags      tail_twitches   approaches      indifferent    
##  Mode :logical   Mode :logical   Mode :logical   Mode :logical  
##  FALSE:2868      FALSE:2589      FALSE:2845      FALSE:1569     
##  TRUE :155       TRUE :434       TRUE :178       TRUE :1454     
##                                                                 
##                                                                 
##                                                                 
##                                                                 
##  runs_from       other_interactions      lat_long      zip_codes    
##  Mode :logical   Length   :3023     Length   :3023   Min.   :10090  
##  FALSE:2345      N.unique : 197     N.unique :3023   1st Qu.:12081  
##  TRUE :678       N.blank  :   0     N.blank  :   0   Median :12420  
##                  Min.nchar:   2     Min.nchar:  38   Mean   :11828  
##                  Max.nchar: 106     Max.nchar:  45   3rd Qu.:12423  
##                  NAs      :2783                      Max.   :12423  
##                                                      NAs    :3014   
##  community_districts borough_boundaries city_council_districts police_precincts
##  Min.   :11          Min.   :4          Min.   :19.00          Min.   :10      
##  1st Qu.:19          1st Qu.:4          1st Qu.:19.00          1st Qu.:13      
##  Median :19          Median :4          Median :19.00          Median :13      
##  Mean   :19          Mean   :4          Mean   :19.07          Mean   :13      
##  3rd Qu.:19          3rd Qu.:4          3rd Qu.:19.00          3rd Qu.:13      
##  Max.   :23          Max.   :4          Max.   :51.00          Max.   :18      
## 

Tuliskan penjelasan singkat mengenai struktur data.

Interpretasi:

Data mencakup beberapa kelompok informasi: (1) Lokasi & Identifikasi seperti koordinat geografis (long, lat), ID unik tupai, area hektar, serta informasi wilayah administratif (zip code, district, borough, police precinct); (2) Waktu pengamatan berupa tanggal sekitar Oktober 2018 dan shift (pagi/sore); (3) Karakteristik Fisik tupai meliputi usia, warna bulu utama, warna aksen, kombinasi warna, dan catatan warna tambahan; (4) Perilaku tupai yang dicatat dalam format logical (TRUE/FALSE) mencakup aktivitas seperti berlari, mengejar, memanjat, makan, mencari makan, suara yang dikeluarkan (kuks, quaas, moans), gerakan ekor, serta reaksi terhadap manusia (mendekat, acuh, atau lari); dan (5) Deskripsi Teks Bebas seperti lokasi spesifik, aktivitas lain, dan interaksi lain. Perlu diperhatikan bahwa beberapa kolom memiliki missing values (NA) yang cukup banyak, terutama pada kolom color_notes (2.841 NA), other_interactions (2.783 NA), other_activities (2.586 NA), dan specific_location (2.547 NA).

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:

Warna bulu yang dominan berdasarkan grafik diatas adalah abu abu

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:

Dari histogram diatas, lokasi tupai terkonsentrasi pada sekitar koordinat x(-73.97) dan sekitar x(-73.96)

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:

Pola sebaran tupai secara spasial mendapati kekosongan pada titik tertentu, yaitu pada sekitar (-73.965 , 40.785)

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:

Warna bulu Gray mendominasi persebaran spasial tupai, hampir tersebar merata. Untuk warna cinnamon cenderung tersebar disekitar koordinat x(-73.98) hingga x(-73.965)

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:

Perilaku chasing pada warna bulu Gray menunjukkan proporsi yang lebih banyak dibanding lainnya, namun sebenarnya hal ini disebabkan karena tupai gray memiliki jumlah yang jauh lebih banyak, sehingga sebenarnya tidak memiliki perbedaan proporsi yang signifikan

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:

Eating behavior pada tupai juvenile menunjukkan proporsi yang lebih banyak dibandingkan tupai adult

11 7. Faceting: Sebaran Spasial Berdasarkan Kelompok Umur

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()

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:

Pola lokasi tupai adult tersebar merata di seluruh lokasi, sedangkan tupai juvenile terdapat titik putus putus yang berarti tidak tersebar secara merata. Tapi menurut saya terdapat kesalahan kode, pada grafik itu membandingkan antara long dan long sehingga grafik terlihat hanya garis lurus. Lalu saya menambahkan blok kode ggplot baru dengan membandingkan long dan lat nya dengan hasil interpretasi bahwa tupai adult memiliki persebaran yang lebih padat dibanding lainnya. Sedangkan tupai Juvenile memliki persebaran yang jarang dan cederung tersebar di daerah kiri bawah

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:

Tupai berbulu Gray dan berusia adult merupakan tupai yang mendominasi hampir di semua lokasi.

13 9. Visualisasi Pilihan Mahasiswa

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

Contoh pertanyaan:

ggplot(squirrel, aes(x = location, fill = running)) +
  geom_bar(position = "fill") +
  labs(
    title = "Running Behavior by Location",
    x = "Location",
    y = "Proportion",
    fill = "Running"
  ) +
  theme_minimal()

Pertanyaan Analitis:

Apakah perilaku running berbeda antara tupai yang berada di atas tanah (above ground) dan di tanah (ground)?

Interpretasi:

Tupai yang berada di permukaan tanah (ground) menunjukkan proporsi perilaku berlari (running) yang lebih tinggi dibandingkan tupai yang berada di atas tanah (above ground). Hal ini cukup logis karena tupai yang berada di atas tanah — misalnya di atas pohon atau cabang — cenderung lebih diam atau sedang memanjat, bukan berlari. Sebaliknya, tupai di permukaan tanah memiliki ruang gerak yang lebih luas sehingga lebih sering teramati dalam kondisi berlari.

14 10. Kesimpulan

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

Kesimpulan:

  1. Warna bulu Gray merupakan warna yang paling dominan di antara populasi tupai di NYC dan tersebar hampir merata di seluruh area Central Park, sementara warna Cinnamon cenderung terkonsentrasi di area barat (sekitar koordinat x -73.98 hingga -73.965).
  2. Sebaran spasial tupai tidak sepenuhnya merata — terdapat area kosong (gap) di sekitar koordinat (-73.965, 40.785), yang kemungkinan merupakan area danau, jalan, atau fasilitas tertentu yang tidak menjadi habitat tupai.
  3. Tupai juvenile menunjukkan proporsi perilaku makan (eating) yang lebih tinggi dibandingkan tupai adult, mengindikasikan bahwa tupai muda lebih banyak menghabiskan waktu untuk makan, kemungkinan karena kebutuhan energi pertumbuhan yang lebih tinggi.
  4. Perilaku chasing paling banyak ditemukan pada tupai berbulu Gray, yang sejalan dengan dominasi populasi warna tersebut, namun perlu analisis lebih lanjut untuk menentukan apakah perbedaan proporsi antar warna bulu bersifat signifikan.
  5. Tupai adult berbulu Gray mendominasi hampir seluruh lokasi pengamatan, menjadikannya kelompok yang paling representatif dalam dataset ini, sedangkan tupai juvenile memiliki sebaran yang lebih terbatas dan tidak merata di seluruh area pengamatan.

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.