library(shiny)
## Warning: package 'shiny' was built under R version 4.3.3
library(leaflet)
## Warning: package 'leaflet' was built under R version 4.3.3
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.3
data(quakes)
str(quakes)
## 'data.frame': 1000 obs. of 5 variables:
## $ lat : num -20.4 -20.6 -26 -18 -20.4 ...
## $ long : num 182 181 184 182 182 ...
## $ depth : int 562 650 42 626 649 195 82 194 211 622 ...
## $ mag : num 4.8 4.2 5.4 4.1 4 4 4.8 4.4 4.7 4.3 ...
## $ stations: int 41 15 43 19 11 12 43 15 35 19 ...
head(quakes)
## lat long depth mag stations
## 1 -20.42 181.62 562 4.8 41
## 2 -20.62 181.03 650 4.2 15
## 3 -26.00 184.10 42 5.4 43
## 4 -17.97 181.66 626 4.1 19
## 5 -20.42 181.96 649 4.0 11
## 6 -19.68 184.31 195 4.0 12
# Mendefinisikan UI untuk aplikasi
ui <- fluidPage(
titlePanel("Dashboard Geospasial"),
sidebarLayout(
sidebarPanel(
selectInput("variable", "Variabel untuk Scatterplot dan Histogram:",
choices = names(quakes)[-c(1, 2)]),
sliderInput("bins", "Jumlah bin:",
min = 1, max = 50, value = 30)
),
mainPanel(
tabsetPanel(
tabPanel("Peta Geospasial",
leafletOutput("map"),
br(),
p("Visualisasi geospasial tersebut menunjukkan peta seismik yang memberikan gambaran tentang distribusi dan intensitas gempa bumi di wilayah sekitar Fiji dan Vanatu.Titik merah menunjukkan gempa bumi dengan magnitudo lebih besar (>=5 magnitudo), sedangkan titik biru menunjukkan gempa dengan magnitudo lebih kecil (<5 magnitudo).Ukuran lingkaran menunjukkan besarnya magnitudo gempa, dengan lingkaran yang lebih besar menunjukkan gempa yang lebih kuat begitupula sebaliknya.
Dari visualisasi ini, terlihat bahwa terdapat konsentrasi gempa yang signifikan di wilayah sekitar Vanuatu dan Fiji. Banyak lingkaran merah besar menunjukkan bahwa wilayah ini sering mengalami gempa dengan magnitudo tinggi (>= 5). Sebaliknya, lingkaran biru yang lebih kecil tersebar di sekitar wilayah tersebut, menunjukkan gempa dengan magnitudo yang lebih rendah (< 5).
Di wilayah Fiji, terlihat kluster gempa yang cukup padat, menandakan aktivitas seismik yang signifikan di daerah ini. Pola distribusi gempa menunjukkan bahwa wilayah ini sering mengalami gempa bumi, yang kemungkinan besar disebabkan oleh pergerakan lempeng tektonik di bawah kawasan tersebut. Visualisasi ini memberikan gambaran tentang distribusi dan intensitas gempa bumi di sekitar wilayah Fiji dan Vanuatu.
Untuk mendapatkan informasi detail mengenai magnitudo dari setiap gempa di lokasi tertentu, pengguna dapat mengklik lingkaran pada titik lokasi yang diinginkan di peta ini. Hal ini akan menampilkan popup dengan informasi lebih lanjut tentang gempa di lokasi tersebut.")
),
tabPanel("Scatterplot",
plotOutput("scatterPlot"),
br(),
p("Grafik ini merupakan scatter plot yang menunjukkan peta seismik dengan plot titik yang mewakili gempa bumi. Sumbu X menunjukkan Longitude (garis bujur), yang berkisar antara 170 dan 185 derajat, sedangkan sumbu Y menunjukkan Latitude (garis lintang), yang berkisar antara -30 dan -15 derajat. Warna titik-titik pada grafik menunjukkan kedalaman gempa bumi, di mana warna yang lebih cerah (putih) menunjukkan kedalaman yang lebih dangkal, dan warna yang lebih gelap (merah) menunjukkan kedalaman yang lebih dalam. Skala warna di sisi kanan grafik menunjukkan kedalaman dari 200 hingga 600, kemungkinan dalam satuan kilometer.
Titik-titik gempa tersebar sepanjang area tertentu, menunjukkan konsentrasi gempa di daerah tertentu. Terdapat dua kluster utama dari gempa bumi yang terlihat jelas, satu di sekitar bujur 180 derajat dan lintang -20 derajat, dan satu lagi di sekitar bujur 175 derajat dan lintang -30 derajat. Pola distribusi gempa mengikuti bentuk tertentu, yang kemungkinan besar menunjukkan aktivitas tektonik di wilayah tersebut, seperti keberadaan lempeng tektonik atau patahan aktif. Konsentrasi gempa di daerah tertentu dapat mengindikasikan adanya subduksi atau aktivitas vulkanik di wilayah tersebut.")
),
tabPanel("Histogram",
plotOutput("histPlot"),
br(),
p("Visualisasi Histogram dari kedalaman gempa bumi (km) ini memiliki interpretasi bentuk distribusi mendekati normal atau lonceng (bell-shaped) atau sebagian besar gempa memiliki kedalaman yang berada di sekitar nilai tengah, dengan frekuensi yang semakin menurun seiring menjauh dari nilai tengah tersebut. Distribusi data juga terlihat cukup simetris, menunjukkan bahwa jumlah gempa dengan kedalaman yang lebih dangkal dan lebih dalam relatif seimbang.
Dalam histogram ini, modus berada di sekitar 200 km. Ini berarti sebagian besar gempa terjadi pada kedalaman sekitar 200 km, begitu pula dengan mediannya. Karena distribusi simetris, mean atau rata-rata kemungkinan juga berada di dekat modus dan median, yaitu sekitar 200 km.
Histogram menunjukkan rentang kedalaman gempa yang cukup luas, mulai dari kurang dari 100 km hingga lebih dari 600 km. Dalam histogram ini, standar deviasi kemungkinan sedang, menunjukkan bahwa sebagian besar gempa memiliki kedalaman yang tidak terlalu jauh dari rata-rata.Terdapat beberapa gempa dengan kedalaman yang sangat dangkal (<100 km) dan sangat dalam (>600 km). Ini bisa dianggap sebagai outlier, yaitu nilai yang jauh dari sebagian besar data lainnya. ")
)
)
)
)
)
# Mendefinisikan logika server untuk aplikasi
server <- function(input, output) {
output$map <- renderLeaflet({
leaflet(data = quakes) %>%
addTiles() %>%
addCircles(lng = ~long, lat = ~lat, weight = 1,
radius = ~10^mag/10, popup = ~as.character(mag),
color = ~ifelse(mag >= 5, 'red', 'blue'))
})
output$scatterPlot <- renderPlot({
ggplot(quakes, aes_string(x = "long", y = "lat", color = input$variable)) +
geom_point() +
labs(x = "Longitude", y = "Latitude", color = input$variable) +
theme_minimal()+
theme(
panel.background = element_rect(fill = "#0E191f"),
plot.background = element_rect(fill = "#0E191f"),
axis.title = element_text(color = "#F3F3F3"),
axis.text = element_text(color = "#F3f3f3"),
axis.line = element_line(color = "white"),
legend.text = element_text(color = "#F3F3F3"),
legend.title = element_text(color = "#F3F3F3")
) +
scale_color_gradient(low = "#F2F2F2", high = "red")
})
output$histPlot <- renderPlot({
data <- quakes[[input$variable]]
bins <- seq(min(data), max(data), length.out = input$bins + 1)
par(bg = "#0E191f", col.axis = "#F2F2F2", col.lab = "#F2F2F2", col.main = "#F2F2F2")
hist(data, breaks = bins, col = "#F2F2F2", border = "#1C1C1C",
xlab = input$variable, main = paste("Histogram dari kedalaman gempa bumi (km) "),
col.axis = "white", fg = "white"
)
par(bg = "#2B3c43")
})
}
# Menjalankan aplikasi Shiny
shinyApp(ui = ui, server = server)
## PhantomJS not found. You can install it with webshot::install_phantomjs(). If it is installed, please make sure the phantomjs executable can be found via the PATH variable.
Shiny applications not supported in static R Markdown documents