Kelompok 6
1. Bonaventura Bagas Barasa - 2602153556
2. Camilla Tiara Dewi - 2602145024
3. Dennis - 2602100644
4. Kanisha Prita Addina - 2602078915
5. Marvel Shallom Isaiah - 2602098766

Instansi : BINUS University, Alam Sutera
Nama Mata Kuliah : Visual Analytics and Application (LB55)

Dataset 1 : Jumlah Hewan Lynx yang Terperangkap di Sungai McKenzie, Kanada (1821-1934)

Dataset lynx adalah dataset historis yang berisi data tahunan jumlah hewan lynx (Lynx canadensis) yang terperangkap di wilayah Sungai McKenzie di Kanada selama tahun 1821 hingga 1934. Dataset ini dapat digunakan digunakan untuk melihat pola naik-turun populasi lynx secara tahunan. Lynxmemiliki siklus populasi yang berulang setiap beberapa tahun, biasanya antara 8-11 tahun. Fluktuasi jumlah lynx yang tertangkap ini biasanya dipengaruhi oleh ketersediaan mangsa utama mereka. Selanjutnya, kita akan memvisualisasikan data ini dengan beberapa cara untuk mengidentifikasi pola fluktuasi populasi lynx dan memahami siklus tahunan yang terjadi.

options(repos = c(CRAN = "https://cran.r-project.org"))
install.packages("plotly")
## Installing package into 'C:/Users/denni/AppData/Local/R/win-library/4.3'
## (as 'lib' is unspecified)
## package 'plotly' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\denni\AppData\Local\Temp\RtmpmIvBeT\downloaded_packages
library(plotly)
## Warning: package 'plotly' was built under R version 4.3.3
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.3.3
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
install.packages("dplyr")
## Installing package into 'C:/Users/denni/AppData/Local/R/win-library/4.3'
## (as 'lib' is unspecified)
## package 'dplyr' successfully unpacked and MD5 sums checked
## Warning: cannot remove prior installation of package 'dplyr'
## Warning in file.copy(savedcopy, lib, recursive = TRUE): problem copying
## C:\Users\denni\AppData\Local\R\win-library\4.3\00LOCK\dplyr\libs\x64\dplyr.dll
## to C:\Users\denni\AppData\Local\R\win-library\4.3\dplyr\libs\x64\dplyr.dll:
## Permission denied
## Warning: restored 'dplyr'
## 
## The downloaded binary packages are in
##  C:\Users\denni\AppData\Local\Temp\RtmpmIvBeT\downloaded_packages
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.3.3
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union

Stacked Box Plot

df_lynx=data.frame(Year=time(lynx),Lynx=as.numeric(lynx))
df_lynx
##     Year Lynx
## 1   1821  269
## 2   1822  321
## 3   1823  585
## 4   1824  871
## 5   1825 1475
## 6   1826 2821
## 7   1827 3928
## 8   1828 5943
## 9   1829 4950
## 10  1830 2577
## 11  1831  523
## 12  1832   98
## 13  1833  184
## 14  1834  279
## 15  1835  409
## 16  1836 2285
## 17  1837 2685
## 18  1838 3409
## 19  1839 1824
## 20  1840  409
## 21  1841  151
## 22  1842   45
## 23  1843   68
## 24  1844  213
## 25  1845  546
## 26  1846 1033
## 27  1847 2129
## 28  1848 2536
## 29  1849  957
## 30  1850  361
## 31  1851  377
## 32  1852  225
## 33  1853  360
## 34  1854  731
## 35  1855 1638
## 36  1856 2725
## 37  1857 2871
## 38  1858 2119
## 39  1859  684
## 40  1860  299
## 41  1861  236
## 42  1862  245
## 43  1863  552
## 44  1864 1623
## 45  1865 3311
## 46  1866 6721
## 47  1867 4254
## 48  1868  687
## 49  1869  255
## 50  1870  473
## 51  1871  358
## 52  1872  784
## 53  1873 1594
## 54  1874 1676
## 55  1875 2251
## 56  1876 1426
## 57  1877  756
## 58  1878  299
## 59  1879  201
## 60  1880  229
## 61  1881  469
## 62  1882  736
## 63  1883 2042
## 64  1884 2811
## 65  1885 4431
## 66  1886 2511
## 67  1887  389
## 68  1888   73
## 69  1889   39
## 70  1890   49
## 71  1891   59
## 72  1892  188
## 73  1893  377
## 74  1894 1292
## 75  1895 4031
## 76  1896 3495
## 77  1897  587
## 78  1898  105
## 79  1899  153
## 80  1900  387
## 81  1901  758
## 82  1902 1307
## 83  1903 3465
## 84  1904 6991
## 85  1905 6313
## 86  1906 3794
## 87  1907 1836
## 88  1908  345
## 89  1909  382
## 90  1910  808
## 91  1911 1388
## 92  1912 2713
## 93  1913 3800
## 94  1914 3091
## 95  1915 2985
## 96  1916 3790
## 97  1917  674
## 98  1918   81
## 99  1919   80
## 100 1920  108
## 101 1921  229
## 102 1922  399
## 103 1923 1132
## 104 1924 2432
## 105 1925 3574
## 106 1926 2935
## 107 1927 1537
## 108 1928  529
## 109 1929  485
## 110 1930  662
## 111 1931 1000
## 112 1932 1590
## 113 1933 2657
## 114 1934 3396
df_lynx$Decade=floor((df_lynx$Year - 1820) / 10) * 10 + 1820
plot_ly(df_lynx, x = ~factor(Decade), y = ~Lynx, type = "box",boxmean=TRUE) %>%
  layout(
    title = "Lynx Population Boxplot (by Decade)",
    xaxis = list(title = "Decade"),
    yaxis = list(title = "Number of Lynx Trapped")
  )

Pada boxplot populasi lynx yang telah dikelompokkan berdasarkan dekade, kita bisa melihat pola variasi jumlah lynx yang ditangkap dari tahun 1820 hingga 1930. Garis tengah dalam setiap kotak menunjukkan median atau nilai tengah jumlah lynx yang ditangkap dalam satu dekade. Boxplot untuk beberapa dekade menunjukkan median yang lebih tinggi, contohnya pada dekade1820an dan 1860an, yang berarti jumlah tangkapan lynx yang lebih banyak di dekade-dekade tersebut. TInggi kotak menunjukkan rentang interkuartil. Dekade 1820an dan 1900an memiliki kotakyang paling tinggi atau rentang interkuartil yang paling besar, yang berarti jumlah tangkapan lynx dalam dekade-dekade ini sangat bervariasi. Titik-titik di luar adalah outliers yang menunjukkan tahun-tahun dengan jumlah tangkapan yang sangat jauh berbeda dari tahun-tahun lain dalam dekade tersebut. Misalnya, dekade 1840-an dan 1890-an memiliki outliers yang menunjukkan tahun-tahun dengan jumlah tangkapan lynx yang tidak biasa, yaitu lebih tinggi dari biasanya. Secara keseluruhan, terdapat pola fluktuasi di beberapa dekade, dengan dekade-dekade tertentu menunjukkan jumlah tangkapan yang lebih tinggi dibandingkan dekade lainnya. Ini bisa mencerminkan siklus populasi lynx yang dipengaruhi oleh faktor-faktor seperti ketersediaan makanan atau perubahan lingkungan. Misalnya, dekade 1820-an, 1860-an, dan 1900-an menunjukkan jumlah tangkapan yang tinggi, mungkin mencerminkan periode ketika populasi lynx meningkat. Sebaliknya, dekade 1850-an dan 1880-an menunjukkan jumlah tangkapan yang lebih rendah dan kurang bervariasi, yang mungkin menandakan periode penurunan populasi lynx.

Bar Plot

plot_ly(df_lynx,x= ~factor(Decade),y= ~Lynx,type="bar") %>%
  layout(
    title = "Lynx Population Barplot (by Decade)",
    xaxis = list(title = "Decade"),
    yaxis = list(title = "Number of Lynx Trapped")
  )

Barplot tersebut menunjukkan tren atau fluktuasi dari jumlah lynx yang terperangkap di Sungai McKenzie, Kanada untuk tahun 1821-1934 berdasarkan dekade. Jumlah lynx terperangkap yang terbanyak adalah pada tahun 1900an, yaitu melebihi 25.000 ekor lynx, kemudian diikuti oleh tahun 1820an dengan lebih dari 20.000 ekor lynx, dan 1910an denga hampir 20.000 ekor lynx. Banyaknya jumlah lynx yang terperangkap tersebut menunjukkan tingginya populasi lynx pada dekade tersebut, yang menunjukkan kemungkinan tingginya jumlah mangsa mereka juga.
Sebaliknya, pada beberapa dekade, kita dapat melihat jumlah lynx terperangkap yang lebih rendah dibandingkan dekade-dekade lainnya. Yang terendah adalah pada tahun 1940an, dengan sekitar 7000 ekor lynx, kemudian di tahun 1930,1870, dan 1900 dengan kurang dari 10.000 ekor lynx. Hal ini menunjukkan rendahnya populasi lynx pada dekade tersebut, yang menunjukkan kemungkinan penurunan jumlah mangsa mereka juga.

Scatter Plot

lynx_df <- data.frame(Year = time(lynx), Lynx = as.vector(lynx))
View(lynx_df)

plot_ly(data = lynx_df,
        x = ~Year,
        y = ~Lynx,
        type = "scatter",
        mode = "markers",
        marker = list(color = 'blue')) %>%
  layout(title = "Lynx Trapped in Canada (1821-1934)",
         xaxis = list(title = "Year"),
         yaxis = list(title = "Number of Lynx Trapped"))

Pada Plot diatas, kita bisa melihat pola persebaran dari dataset Lynx. Dimana seperti yang kita tahu sebelumnya bahwa, jumlah Lynx yang tertangkap memiliki pola yang cenderung berulang meskipun tidak sama persis. Fluktuasi yang konsisten, menunjukan mekanisme alami mengatur populasi binatang mamalia ini. Berikut beberapa hasil yang dapat digaris bawahi setelah melihat pola tersebut: - Pada tahun 1860an dan 1900 terlihat adanya outlier dimana jumlah menyentuh angka melebihi 6,000 Ini hal ini bisa terjadi dikarenakan adanya puncak siklus populasi ekstrem. Kemungkinan pada saat itu lingkungan yang sangat mendukung bisa menjadi faktor utama seperti adanya ketersediaan makanan atau mangsa yang cukup untuk berkembang biak lebih banyak daripada di hari – hari biasanya. - Adanya outlier juga membuktikan bahwa ini adalah fenomena ekologi langka terbukti dimana titik tercapainya +6,000 jarang terjadi. Dari hasil tersebut dapat disimpulkan scatterplot bisa menjadi pilihan yang tepat dalam mendisplay hasil dari dataset Lynx. Dikarenakan hasil nya yang cukup tergambar secara jelas pada Plot tersebut.

Line Chart

plot_ly(lynx_df, x = ~Year, y = ~Lynx, type = 'scatter', mode = 'lines')

Jika scatter plot lebih mengambarkan pola persebaran setiap data points, Line Chart hadir untuk memberikan gambaran jelas pergerakan fluktuasi dari dataset. Kita bisa mengetahui fluktuasi yang cukup tinggi pada tahun 1860 dan 1900. Dari lembah yang rendah mencapai punck tertinggi. Hal ini dikarenakan adanya fenomena ekstrem sehingga mengakibatkan outlier pada data. Line Chart tersebut memiliki interval sekitar 20 tahun. Mengesampingkan adanya fenomena ekstrem, dari tahun ke tahun siklus cukup konsisten meskipun terdapat fluktuasi, tetapi hal ini terjadi secara normal dikarenakan adanya mekanisme alam.

Dataset 2 :Visualisasi Aliran Sungai Nile (1871-1970)

Dataset Nile adalah dataset historis yang berisi data tahunan aliran sungai Nil (Nile River) dalam satuan 1 juta meter kubik per tahun, yang diukur di Aswan, Mesir. Dataset ini mencakup data dari tahun 1871 hingga 1970 dan dapat digunakan untuk mengamati pola variasi aliran air Sungai Nil selama periode ini.
Aliran sungai Nil dipengaruhi oleh faktor-faktor alami seperti curah hujan di hulu sungai, khususnya di wilayah dataran tinggi Ethiopia yang menyuplai sebagian besar air Sungai Nil selama musim hujan. Faktor iklim, seperti periode basah dan kering di Afrika Timur, juga memainkan peran penting dalam fluktuasi aliran air. Fenomena-fenomena iklim besar, seperti El Niño dan La Niña, serta perubahan iklim jangka panjang, turut memengaruhi pola aliran sungai. Selanjutnya, kita akan memvisualisasikan data ini untuk mengidentifikasi pola naik-turun aliran air Sungai Nil dari tahun ke tahun dan memahami siklus-siklus aliran air yang mungkin terjadi. Visualisasi ini juga dapat membantu dalam melihat tahun-tahun di mana terjadi aliran tinggi atau rendah yang signifikan, yang berpotensi berdampak pada wilayah sekitar Sungai Nil, khususnya dalam konteks pertanian dan ketahanan pangan.

library(plotly)
library(dplyr)
View(Nile)

## Prepare the Nile dataset as a data frame
nile_df <- data.frame(
  year = time(Nile),
  flow = as.numeric(Nile)
) %>%
  # Create a decade column
  mutate(decade = floor((year - 1870) / 10) * 10 + 1870) %>%
  # Categorize flow values
  mutate(flow_category = case_when(
    flow < 600 ~ "Low",
    flow < 900 ~ "Medium",
    TRUE ~ "High"
  ))

Line Chart

plot_ly(data = nile_df, x = ~year, y = ~flow, type = 'scatter', mode = 'lines') %>%
  layout(title = "Line Plot of Annual Nile River Flow",
         xaxis = list(title = "Year"),
         yaxis = list(title = "Flow"))

Line chart tersebut menunjukkan bahwa volume aliran Sungai Nil berfluktuasi dari tahun 1871 ke tahun 1970. Beberapa periode mencatat aliran tinggi, sementara periode lainnya menunjukkan penurunan yang signifikan. Volume aliran tertinggi tercatat sekitar tahun 1878, dengan aliran di atas 1.200 unit. Aliran tinggi lainnya terjadi di sekitar awal 1900-an dan pertengahan 1960-an. Periode ini mungkin menunjukkan curah hujan yang tinggi atau kondisi iklim yang mendukung volume air yang lebih tinggi di Sungai Nil. Terdapat periode penurunan aliran yang signifikan, seperti sekitar tahun 1913 dan awal tahun 1940-an. Penurunan ini dapat diakibatkan oleh faktor iklim, seperti kekeringan, atau aktivitas manusia yang mempengaruhi aliran air sungai. Variabilitas aliran sungai yang cukup besar menunjukkan bahwa Sungai Nil sangat dipengaruhi oleh perubahan iklim dan mungkin juga oleh perubahan pola penggunaan lahan dan pengelolaan air di sepanjang sungai. Siklus aliran yang berfluktuasi ini menunjukkan pola alamiah yang kompleks, di mana ada pola aliran naik-turun secara bergantian di setiap dekade. Volume aliran yang sangat rendah dapat menyebabkan kesulitan bagi pertanian dan kebutuhan air di wilayah sekitarnya, terutama di daerah yang bergantung pada Sungai Nil untuk irigasi. Sebaliknya, volume aliran yang sangat tinggi bisa menyebabkan banjir, yang mungkin memiliki efek positif untuk menyuburkan tanah pertanian di beberapa tempat atau dampak negatif berupa kerusakan infrastruktur.

Scatter Plot

plot_ly(data = nile_df, x = ~year, y = ~flow, type = 'scatter', mode = 'markers') %>%
  layout(title = "Scatter Plot of Annual Nile River Flow",
         xaxis = list(title = "Year"),
         yaxis = list(title = "Flow"))

Scatter plot menunjukkan Aliran tahunan Sungai Nil bervariasi antara sekitar 500 hingga 1400. Rentang variasi ini menunjukkan bahwa aliran sungai tidak konstan dari tahun ke tahun.Pada akhir abad ke-19 (sekitar 1871 hingga 1900), nilai aliran sungai cenderung lebih tinggi, dengan beberapa titik data mencapai angka di atas 1200. Ini menunjukkan periode aliran yang relatif tinggi pada tahun-tahun tersebut. Kemudian pada sekitar tahun 1900, terdapat penurunan aliran sungai dengan fluktuasi yang lebih tinggi. Aliran tahunan terlihat bergerak naik turun, tetapi tidak mencapai puncak setinggi periode sebelumnya. Setelah tahun 1940-an, aliran tahunan Sungai Nil cenderung lebih stabil dan berkisar di sekitar 800 hingga 1000. Ini bisa mengindikasikan adanya perubahan iklim, faktor lingkungan, atau dampak buatan manusia yang memengaruhi stabilitas aliran. Lalu dalam beberapa titik terlihat sebagai outlier atau anomali, seperti penurunan drastis di bawah 600 pada awal abad ke-20. Ini mungkin mengindikasikan kejadian ekstrem, seperti musim kemarau panjang atau banjir besar. Secara keseluruhan, aliran sungai nil menunjukkan dalam 1 abad mengalami penurunan yang signifikan, hal ini bisa dipengaruhi oleh banyak faktor, salah satunya degradasi lingkungan dan pemanasan global. Maka dari itu, penting untuk menjaga kelestarian lingkungan agar aliran sungai tidak mengalami penurunan terus menerus.

Stacked Bar Plot

nile_bar_data <- nile_df %>%
  group_by(decade, flow_category) %>%
  summarize(count = n(), .groups = "drop")

plot_ly(data = nile_bar_data, x = ~decade, y = ~count, color = ~flow_category, type = 'bar') %>%
  layout(barmode = "stack",
         title = "Stacked Bar Plot of Nile River Flow Categories by Decade",
         xaxis = list(title = "Decade"),
         yaxis = list(title = "Count of Years"))

Stacked Bar Plot menunjukkan fluktuasi volume aliran Sungai Nil berdasarkan dekade, mengelompokkan aliran menjadi kategori rendah, sedang, dan tinggi. Terlihat bahwa aliran tinggi mendominasi pada akhir 1800-an hingga 1930-an, sementara aliran sedang menjadi lebih umum di beberapa dekade berikutnya. Periode aliran rendah hanya tercatat singkat di awal 1900-an. Pola aliran yang berfluktuasi ini dapat mengindikasikan perubahan iklim atau kondisi curah hujan yang bervariasi di wilayah sekitar Sungai Nil. Variasi dalam kategori aliran dari dekade ke dekade menunjukkan adanya ketergantungan besar pada pola cuaca dan potensi perubahan pola penggunaan lahan atau intervensi manusia dalam pengelolaan sungai. Periode aliran rendah bisa berdampak pada kebutuhan air untuk pertanian dan masyarakat, sementara periode aliran tinggi, meskipun dapat menyuburkan tanah, juga berisiko menyebabkan banjir dan kerusakan infrastruktur di wilayah sekitar Sungai Nil.

Stacked Box Plot

plot_ly(data = nile_df, x = ~as.factor(decade), y = ~flow, type = 'box', color = ~as.factor(decade)) %>%
  layout(title = "Box Plot of Nile River Flow by Decade",
         xaxis = list(title = "Decade"),
         yaxis = list(title = "Flow"))
## Warning in RColorBrewer::brewer.pal(N, "Set2"): n too large, allowed maximum for palette Set2 is 8
## Returning the palette you asked for with that many colors

## Warning in RColorBrewer::brewer.pal(N, "Set2"): n too large, allowed maximum for palette Set2 is 8
## Returning the palette you asked for with that many colors

Plot box bertingkat dari aliran Sungai Nil per dekade menunjukkan tren aliran yang tinggi pada akhir abad ke-19 dan awal abad ke-20. Dekade 1870-an dan 1880-an memiliki median aliran yang tinggi, dengan rentang data yang luas dan beberapa outlier, menandakan variasi yang besar dalam aliran sungai. Hal ini menunjukkan bahwa pada periode tersebut, aliran Sungai Nil sering berada pada tingkat yang lebih tinggi. Memasuki abad ke-20, aliran Sungai Nil cenderung menurun secara bertahap. Pada dekade 1900-an hingga 1940-an, median aliran sungai relatif rendah dan distribusi alirannya cenderung lebih stabil, menunjukkan penurunan variasi. Periode ini mungkin mengindikasikan kondisi lingkungan atau iklim yang lebih stabil, meskipun alirannya tetap lebih rendah dibandingkan dekade-dekade sebelumnya. Pada pertengahan abad ke-20, terutama pada dekade 1950-an dan 1960-an, terdapat peningkatan kembali dalam variasi aliran Sungai Nil, meskipun dengan median yang tidak jauh berbeda dari sebelumnya. Dekade 1970-an menunjukkan penurunan yang signifikan dalam aliran dengan rentang yang sempit, menandakan aliran yang konsisten namun berada pada tingkat rendah. Pola ini dapat menggambarkan adanya perubahan lingkungan atau pengaruh manusia terhadap aliran Sungai Nil dari waktu ke waktu.

Dataset 3 : Pemahaman Pola Seismik melalui Analisis Kedalaman, Magnitudo, dan Jumlah Stasiun Pelaporan Gempa Bumi

Data quakes ini mencatat informasi rinci mengenai berbagai kejadian gempa bumi, yang diwakili oleh beberapa variabel utama. Setiap baris dalam dataset mewakili satu kejadian gempa dan mencakup informasi tentang lokasi geografis gempa melalui koordinat latitude dan longitude. Selain itu, terdapat variabel depth yang menunjukkan kedalaman gempa dalam satuan meter, mag yang mengindikasikan magnitudo gempa, dan stations yang mencatat jumlah stasiun yang melaporkan kejadian tersebut. Data ini juga telah dikelompokkan ke dalam dua kategori tambahan: depth_category dan magnitude_category, yang mengelompokkan nilai kedalaman dan magnitudo dalam beberapa rentang. Kedalaman gempa dikategorikan menjadi 0-100 meter, 100-300 meter, 300-500 meter, dan 500-700 meter, sementara magnitudo diklasifikasikan dalam rentang 4.0-4.5 hingga 5.5-6.0. Mayoritas gempa memiliki magnitudo antara 4.0 hingga 5.5, dengan kedalaman berkisar dari 100 hingga 700 meter. Data ini memungkinkan kita untuk melihat distribusi gempa berdasarkan kategori kedalaman dan magnitudo serta mengidentifikasi seberapa sering gempa dengan intensitas tertentu terjadi. Analisis data ini dapat membantu dalam memahami pola seismik di wilayah yang diteliti, termasuk korelasi antara kedalaman dan magnitudo gempa. Selain itu, variabel jumlah stasiun yang melaporkan setiap gempa dapat memberikan wawasan tambahan mengenai kekuatan sinyal atau persebaran dampak dari setiap gempa yang terjadi.

#Line Chart

View(quakes)
plot_ly(data = quakes, x = ~seq_along(depth)) %>%
  add_trace(y = ~depth, name = "Depth", type = 'scatter', mode = 'lines',
            line = list(color = 'rgba(34,139,34,0.6)')) %>% # semi-transparent green for depth
  add_trace(y = ~mag, name = "Magnitude", type = 'scatter', mode = 'lines+markers',
            yaxis = "y2", line = list(color = 'blue'), marker = list(size = 3, color = 'blue')) %>%
  layout(title = "Earthquake Depth and Magnitude over Index with Separate Axes",
         xaxis = list(title = "Index", showgrid = FALSE),
         yaxis = list(title = "Depth", showgrid = FALSE),
         yaxis2 = list(title = "Magnitude", overlaying = "y", side = "right", showgrid = FALSE),
         legend = list(title = list(text = "Legend")))

Grafik garis ini menunjukkan kedalaman (hijau) dan magnitudo (biru) gempa bumi berdasarkan urutan indeks pengamatan, masing-masing diplot dengan sumbu y terpisah untuk kejelasan. Kedalaman, yang ditampilkan di sumbu kiri, berfluktuasi secara luas dari permukaan hingga sekitar 700 meter, tanpa pola yang jelas atau periodik, menunjukkan variabilitas yang tinggi di antara kejadian-kejadian gempa. Magnitudo, yang ditampilkan di sumbu kanan, menunjukkan fluktuasi yang jauh lebih sedikit, umumnya berkisar antara 4,0 hingga 6,0, dengan sebagian besar nilai antara 4,0 dan 5,5. Lonjakan sesekali mendekati 6,0 menandakan adanya beberapa gempa yang lebih kuat, meskipun jarang terjadi. Penggunaan sumbu terpisah mengungkapkan bahwa kedalaman dan magnitudo bervariasi secara independen, dengan fluktuasi besar pada kedalaman yang tidak berkorelasi dengan perubahan magnitudo. Hal ini menunjukkan bahwa magnitudo gempa dalam dataset ini mungkin dipengaruhi oleh faktor selain kedalaman, karena gempa yang lebih dalam tidak selalu memiliki magnitudo yang lebih tinggi. Grafik ini secara efektif menunjukkan kompleksitas aktivitas seismik, dengan kedalaman dan magnitudo yang beroperasi pada pola yang berbeda.

Scatter Plot

plot_ly(data = quakes, x = ~depth, y = ~mag, type = 'scatter', mode = 'markers',
        marker = list(size = 10, color = ~depth, colorscale = 'Viridis', showscale = TRUE, 
                      colorbar = list(title = "Depth"))) %>%
  layout(title = "Magnitude vs. Depth of Earthquakes",
         xaxis = list(title = "Depth", showgrid = FALSE),
         yaxis = list(title = "Magnitude", showgrid = FALSE))

Plot sebar ini menunjukkan hubungan antara kedalaman dan magnitudo gempa, dengan setiap titik diberi kode warna berdasarkan kedalamannya. Gradien warna, dari ungu (kedalaman dangkal) hingga kuning (kedalaman lebih besar), memungkinkan perbedaan visual cepat antara gempa dangkal dan dalam. Grafik ini mengungkapkan bahwa sebagian besar gempa dengan magnitudo yang lebih tinggi (di atas 5,5) cenderung terjadi pada kedalaman yang lebih dangkal, seperti yang terlihat pada kumpulan titik ungu dan biru yang terkonsentrasi di sisi kiri grafik. Seiring bertambahnya kedalaman, magnitudo gempa umumnya jatuh dalam rentang yang lebih sempit, sebagian besar antara 4,0 dan 5,0, menunjukkan adanya batasan pada intensitas gempa di kedalaman yang lebih dalam. Selain itu, penyebaran titik di berbagai kedalaman menunjukkan bahwa sementara gempa dangkal memiliki rentang magnitudo yang lebih luas, gempa yang lebih dalam lebih terbatas dalam hal magnitudo. Pola ini menunjukkan bahwa faktor-faktor yang mempengaruhi magnitudo mungkin berbeda antara gempa dangkal dan dalam, menunjukkan adanya kompleksitas dalam hubungan antara kedalaman dan kekuatan gempa.

Stacked Bar Plot

quakes$depth_category <- cut(quakes$depth, 
                             breaks = c(0, 100, 300, 500, 700), 
                             labels = c("0-100", "100-300", "300-500", "500-700"),
                             include.lowest = TRUE)

quakes$magnitude_category <- cut(quakes$mag, 
                                 breaks = c(4, 4.5, 5, 5.5, 6),
                                 labels = c("4.0-4.5", "4.5-5.0", "5.0-5.5", "5.5-6.0"),
                                 include.lowest = TRUE)

quakes_summary <- quakes %>%
  group_by(depth_category, magnitude_category) %>%
  summarize(total_stations = sum(stations), .groups = "drop")

quakes_summary <- quakes_summary %>%
  group_by(depth_category) %>%
  mutate(prop_stations = total_stations / sum(total_stations)) %>%
  ungroup()

colors <- c("4.0-4.5" = "#440154", "4.5-5.0" = "#31688E", "5.0-5.5" = "#35B779", "5.5-6.0" = "#FDE725")

plot_ly(data = quakes_summary, x = ~depth_category, y = ~prop_stations, type = 'bar', 
        color = ~magnitude_category,
        colors = colors) %>%
  layout(title = "Proportion of Stations Reporting by Depth and Magnitude Category",
         xaxis = list(title = "Depth Category"),
         yaxis = list(title = "Proportion of Stations", tickformat = ".0%"),
         barmode = "stack",
         showlegend = TRUE)

Grafik batang bertumpuk ini menggambarkan proporsi stasiun pelaporan di empat kategori kedalaman (0-100, 100-300, 300-500, dan 500-700 meter) dengan setiap batang dibagi berdasarkan rentang magnitudo gempa. Setiap warna mewakili kategori magnitudo yang berbeda: 4,0-4,5 (ungu) hingga 5,5-6,0 (kuning). Terlihat bahwa magnitudo rendah (4,0-5,0) mendominasi di semua kedalaman, sedangkan magnitudo yang lebih tinggi (5,5-6,0) relatif jarang. Pada kategori kedalaman terdangkal (0-100 meter), magnitudo yang lebih tinggi terjadi lebih sering dibandingkan kategori yang lebih dalam, di mana magnitudo sebagian besar lebih rendah. Hal ini menunjukkan bahwa gempa bumi yang lebih dangkal mungkin memiliki kemungkinan yang lebih tinggi untuk magnitudo yang lebih kuat, sedangkan gempa yang lebih dalam umumnya lebih rendah dalam magnitudo. Grafik ini memberikan gambaran tentang distribusi dan hubungan antara kedalaman dan magnitudo gempa, menunjukkan bahwa gempa bermagnitudo tinggi cenderung terkonsentrasi pada kedalaman yang lebih dangkal.

Stacked Box Plot

plot_ly(data = quakes, x = ~depth_category, y = ~mag, type = 'box', color = ~depth_category,
        colors = c("0-100" = '#440154', "100-300" = '#31688E', "300-500" = '#35B779', "500-700" = '#FDE725')) %>%
  layout(title = "Magnitude by Depth Category",
         xaxis = list(title = "Depth Category", showgrid = FALSE),
         yaxis = list(title = "Magnitude", showgrid = FALSE))

Grafik kotak bertumpuk ini menunjukkan distribusi magnitudo gempa di berbagai kategori kedalaman (0-100, 100-300, 300-500, dan 500-700 meter). Setiap kategori kedalaman memiliki warna yang berbeda, memungkinkan perbandingan yang mudah. Grafik ini menunjukkan bahwa meskipun semua kategori kedalaman memiliki median magnitudo yang mirip, sekitar 4,5 hingga 5,0, kategori terdangkal (0-100 meter) menunjukkan rentang yang lebih lebar dan jumlah outlier yang lebih tinggi di atas 5,5. Hal ini menunjukkan bahwa gempa bumi yang lebih dangkal menunjukkan variabilitas yang lebih besar dalam magnitudo, dengan kejadian-kejadian gempa bermagnitudo tinggi yang sesekali terjadi. Kategori kedalaman yang lebih dalam, terutama 300-500 dan 500-700 meter, menunjukkan variabilitas yang lebih sedikit dan outlier yang lebih sedikit, menunjukkan bahwa gempa bumi yang lebih dalam cenderung lebih konsisten dalam hal magnitudo. Grafik kotak ini mendukung pengamatan bahwa magnitudo yang lebih tinggi lebih umum di daerah yang lebih dangkal, sedangkan gempa bumi yang lebih dalam umumnya memiliki kekuatan sedang.