Scraping Dataset from Wikipedia
library(tidyverse)
library(rvest)
library(lubridate)
library(shinydashboard)
library(rsconnect)
library(glue)
library(plotly)
url = read_html("https://en.wikipedia.org/wiki/COVID-19_pandemic_in_Indonesia")
data_covid = url %>%
html_table(fill = T, header = F) %>%
.[[2]]
data_covid = data_covid[-c(1:4),]
data_covid$X2 = NULL
data_covid$X3 = NULL
gsub("\\(\\S*","",data_covid$X4) -> data_covid$X4
gsub("\\(\\S*","",data_covid$X5) -> data_covid$X5
names(data_covid)[c(1,2,3)] = c("Date","Case","Death")
data_covid$Case = gsub("[[:punct:]]","",data_covid$Case)
data_covid$Death = gsub("[[:punct:]]","",data_covid$Death)
row.names(data_covid) = seq(nrow(data_covid))
no = data_covid %>% tail(1) %>% row.names()
data_covid = data_covid[-as.numeric(no),]
data_covid[nchar(data_covid$Death)<1,]$Death = "0"
data_covid$Date = as.Date(data_covid$Date, "%Y-%m-%d")
data_covid$Case = as.numeric(data_covid$Case)
data_covid$Death = as.numeric(data_covid$Death)
data_covid %>%
mutate(kasus1 = lag(Case, n = 1),
Kasus_harian = Case - kasus1,
kasus2 = lag(Death, n = 1),
Kematian_harian = Death - kasus2) %>%
select(Date, Case, Kasus_harian, Death, Kematian_harian) %>%
rename("Total_kasus" = Case,
"Total_kematian" = Death) -> data_covid
data_covid[is.na(data_covid$Kasus_harian),]$Kasus_harian = 0
data_covid[is.na(data_covid$Kematian_harian),]$Kematian_harian = 0
lubridate::month(data_covid$Date, label = T) -> data_covid$Bulan
lubridate::year(data_covid$Date) -> data_covid$TahunFile ini berisi template untuk mejawab pertanyaan 5W+1H saat briefing Capstone Data Visualization sebagai langkah awal sebelum membuat Dashboard. Silakan Bapak/Ibu mengisi jawaban di bawah.
File ini tidak akan dinilai namun Bapak/Ibu WAJIB disubmit ke dalam classroom pada hari H briefing Capstone Data Visualization.
Tentukan tujuan atau informasi yang ingin ditampilkan dalam dashboard
Jawab
Tujuan yang ingin dicapai atau informasi yang ingin disampaikan:
Untuk siapa dashboard ini dibuat? Siapa target pembaca dari dashboard ini?
Jawab
Apakah data yang dibuat relevan atau sesuai dengan tujuan? Mengapa?
Jawab
Apakah data yang digunakan masih up to date atau masih relevan dengan kondisi sekarang? Apakah ada informasi tentang tanggal update terakhir dari data tersebut?
Jawab
Bagaimana Bapak/Ibu menggunakan visualisasi untuk menjawab tujuan yang telah disebutkan?
Buat plot yang akan dimasukkan ke dalam dashboard. Boleh dalam bentuk ggplot maupun plotly.
Jawab
Plot untuk menjawab tujuan pertama
# your code here
plot1 <- ggplot(data = data_covid, aes(x = Date,
y = Kasus_harian,
text = glue("{Date}
Sum of Positive Case: {Kasus_harian}"),
group = 1)) +
geom_line() +
geom_line(data = data_covid[data_covid$Bulan %in% c("Jan","Feb"),],
col = 'red') +
geom_smooth(method = "loess", se = F, size = .2) +
theme_minimal() +
labs(x = NULL,
y = "Daily Case",
title = "Daily Case Positif Covid-19 in Indonesia") +
theme(plot.title = element_text(hjust = .5))
ggplotly(plot1, tooltip = c("text")) %>%
config(displayModeBar = F)Plot kedua
# your code here
data_covid %>%
filter(Tahun == 2020) %>%
group_by(Bulan) %>%
summarise(positif = sum(Kasus_harian),
death = sum(Kematian_harian)) %>%
slice(3) %>%
pivot_longer(cols = -Bulan) %>%
mutate(prop = value / sum(value) *100) %>%
mutate(ypos = cumsum(prop)- 0.5*prop ) %>%
ggplot(aes(x="", y=prop, fill=name)) +
geom_bar(stat="identity", width=1, color="white") +
coord_polar("y", start=0) +
theme_void() +
theme(legend.position="none") +
geom_text(aes(y = ypos, label = name), color = "white", size=6) +
scale_fill_brewer(palette="Set1")Plot ketiga
# your code here
plot3 <- ggplot(data = data_covid, aes(x=Kasus_harian,
y=Kematian_harian,
col = (Kasus_harian+Kematian_harian)/2,
text = glue("{Date}"))) +
geom_point() +
scale_color_gradient(low = "green", high = "red") +
labs(x = "Positive Case",
y = "Death Case",
title = "Correlation about Positive & Death Pandemic in Indonesia") +
theme_minimal() +
theme(legend.position = "none",
plot.title = element_text(hjust = .5))
ggplotly(plot3, tooltip = "text") %>%
config(displayModeBar = F)Buat chunk baru apabila ada lebih dari 3 plot.
Bagaimana desain layout atau tata letak dashboard yang akan dibuat?
Jawab
Contoh penulisan layout.
Tab atau halaman pertama
Tab atau halaman kedua