Visualisasi Data Covid

Analisis Data COVID19 di Indonesia

Data yang digunakan adalah data Covid Jawa Barat, dapat di download pada link berikut ini: https://ipb.link/praktikum-visualisasidata

Data

cov_jabar <- read.csv("Datacov_Jabar.csv", sep=";")
head(cov_jabar)
##        tanggal KASUS MENINGGAL SEMBUH DIRAWAT_OR_ISOLASI AKUMULASI_KASUS
## 1 1.583194e+12     1         1      0                  0               1
## 2 1.583280e+12     1         0      0                  1               2
## 3 1.583366e+12     1         0      0                  1               3
## 4 1.583453e+12     1         0      0                  1               4
## 5 1.583539e+12     0         0      0                  0               4
## 6 1.583626e+12     0         0      0                  0               4
##   AKUMULASI_SEMBUH AKUMULASI_MENINGGAL AKUMULASI_DIRAWAT_OR_ISOLASI
## 1                0                   1                            0
## 2                0                   1                            1
## 3                0                   1                            2
## 4                0                   1                            3
## 5                0                   1                            3
## 6                0                   1                            3
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.0.4
## 
## 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
new_cov_jabar <-
  cov_jabar %>% 
  select(-contains("DIRAWAT_OR_ISOLASI")) %>% 
  select(-starts_with("AKUMULASI")) %>% 
  rename(
    kasus_baru = KASUS,
    meninggal = MENINGGAL,
    sembuh = SEMBUH
    ) %>% 
  mutate(
    tanggal = as.POSIXct(tanggal / 1000, origin = "1970-01-01"),
    tanggal = as.Date(tanggal)
  )
head(new_cov_jabar)
##      tanggal kasus_baru meninggal sembuh
## 1 2020-03-03          1         1      0
## 2 2020-03-04          1         0      0
## 3 2020-03-05          1         0      0
## 4 2020-03-06          1         0      0
## 5 2020-03-07          0         0      0
## 6 2020-03-08          0         0      0

Grafik Kasus Harin Positif Covid

Menggunakan plot biasa tanpa warna dan nama

library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.0.4
library(hrbrthemes)
## Warning: package 'hrbrthemes' was built under R version 4.0.5
ggplot(new_cov_jabar, aes(x = tanggal, y = kasus_baru)) +
  geom_col()

Merubah warna dan memberi nama plot

library(ggplot2)
library(hrbrthemes)
p1 <- ggplot(new_cov_jabar, aes(tanggal, kasus_baru)) +
    geom_col(fill = "salmon") +
    labs(
      x = NULL,
      y = "Jumlah kasus",
      title = "Kasus Harian Positif COVID-19 di Jawa Barat",
      subtitle = "Terjadi pelonjakan kasus di awal bulan Juli akibat klaster Secapa AD Bandung",
      caption = "Sumber data: covid.19.go.id"
    ) +
    theme_ipsum(
      base_size = 13,
      plot_title_size = 21,
      grid = "Y",
      ticks = TRUE
    ) +
    theme(plot.title.position = "plot")
p1

Grafik untuk Kasus Sembuh

library(ggplot2)
library(hrbrthemes)
p2 <- ggplot(new_cov_jabar, aes(tanggal, sembuh)) +
  geom_col(fill = "olivedrab2") +
  labs(
    x = NULL,
    y = "Jumlah kasus",
    title = "Kasus Harian Sembuh Dari COVID-19 di Jawa Barat",
    caption = "Sumber data: covid.19.go.id"
  ) +
  theme_ipsum(
    base_size = 13, 
    plot_title_size = 21,
    grid = "Y",
    ticks = TRUE
  ) +
  theme(plot.title.position = "plot")
p2 

Grafik untuk Kasus Meninggal

library(ggplot2)
library(hrbrthemes)
p3 <- ggplot(new_cov_jabar, aes(tanggal, meninggal)) +
  geom_col(fill = "darkslategray4") +
  labs(
    x = NULL,
    y = "Jumlah kasus",
    title = "Kasus Harian Meninggal Akibat COVID-19 di Jawa Barat",
    caption = "Sumber data: covid.19.go.id"
  ) +
  theme_ipsum(
    base_size = 13, 
    plot_title_size = 21,
    grid = "Y",
    ticks = TRUE
  ) +
  theme(plot.title.position = "plot")
p3

Grafik Akumulasi Kasus Aktif

library(dplyr)
library(lubridate)
## Warning: package 'lubridate' was built under R version 4.0.4
## 
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
## 
##     date, intersect, setdiff, union
cov_jabar_pekanan <- new_cov_jabar %>% 
  count(
    tahun = year(tanggal),
    pekan_ke = week(tanggal),
    wt = kasus_baru,
    name = "jumlah"
  )

head(cov_jabar_pekanan)
##   tahun pekan_ke jumlah
## 1  2020        9      1
## 2  2020       10      3
## 3  2020       11     16
## 4  2020       12     41
## 5  2020       13     98
## 6  2020       14    149
library(dplyr)
library(tidyr)
## Warning: package 'tidyr' was built under R version 4.0.4
cov_jabar_pekanan <-
  cov_jabar_pekanan %>% 
  mutate(
    jumlah_pekanlalu = dplyr::lag(jumlah, 1),
    jumlah_pekanlalu = ifelse(is.na(jumlah_pekanlalu), 0, jumlah_pekanlalu),
    lebih_baik = jumlah < jumlah_pekanlalu
  )
head(cov_jabar_pekanan)
##   tahun pekan_ke jumlah jumlah_pekanlalu lebih_baik
## 1  2020        9      1                0      FALSE
## 2  2020       10      3                1      FALSE
## 3  2020       11     16                3      FALSE
## 4  2020       12     41               16      FALSE
## 5  2020       13     98               41      FALSE
## 6  2020       14    149               98      FALSE

Jumlah Kasus Aktif

cov_jabar_akumulasi <- 
  new_cov_jabar %>% 
  transmute(
    tanggal,
    akumulasi_aktif = cumsum(kasus_baru) - cumsum(sembuh) - cumsum(meninggal),
    akumulasi_sembuh = cumsum(sembuh),
    akumulasi_meninggal = cumsum(meninggal)
  )

head(cov_jabar_akumulasi)
##      tanggal akumulasi_aktif akumulasi_sembuh akumulasi_meninggal
## 1 2020-03-03               0                0                   1
## 2 2020-03-04               1                0                   1
## 3 2020-03-05               2                0                   1
## 4 2020-03-06               3                0                   1
## 5 2020-03-07               3                0                   1
## 6 2020-03-08               3                0                   1

Transformasi Data

cov_jabar_akumulasi_pivot <- 
  cov_jabar_akumulasi %>% 
  gather(
    key = "kategori",
    value = "jumlah",
    -tanggal
  ) %>% 
  mutate(
    kategori = sub(pattern = "akumulasi_", replacement = "", kategori)
  )

head(cov_jabar_akumulasi_pivot)
##      tanggal kategori jumlah
## 1 2020-03-03    aktif      0
## 2 2020-03-04    aktif      1
## 3 2020-03-05    aktif      2
## 4 2020-03-06    aktif      3
## 5 2020-03-07    aktif      3
## 6 2020-03-08    aktif      3

Grafik Akumulasi Kasus Aktif

library(ggplot2)
library(hrbrthemes)

p4 <- ggplot(cov_jabar_akumulasi_pivot, aes(tanggal, jumlah, colour = (kategori))) +
    geom_line(size = 0.9) + 
    scale_y_continuous(sec.axis = dup_axis(name = NULL)) +
    scale_colour_manual(
      values = c(
        "aktif" = "salmon",
        "meninggal" = "darkslategray4",
        "sembuh" = "olivedrab2"
     ),
     labels = c("Aktif", "Meninggal", "Sembuh")
    ) +
    labs(
      x = NULL,
      y = "Jumlah kasus akumulasi",
      colour = NULL,
      title = "Dinamika Kasus COVID-19 di Jawa Barat",
      caption = "Sumber data: covid.19.go.id"
     ) +
    theme_ipsum(
      base_size = 13,
      plot_title_size = 21,
      grid = "Y",
      ticks = TRUE
    ) +
    theme(
      plot.title = element_text(hjust = 0.5),
      legend.position = "top"
    )
p4

Arrange the plots

#Move to a new page
library(grid)
library(gridExtra)
## Warning: package 'gridExtra' was built under R version 4.0.5
## 
## Attaching package: 'gridExtra'
## The following object is masked from 'package:dplyr':
## 
##     combine
grid.newpage()
# Create layout : nrow = 2, ncol = 2
pushViewport(viewport(layout = grid.layout(2, 2)))
# A helper function to define a region on the layout
define_region <- function(row, col){
  viewport(layout.pos.row = row, layout.pos.col = col)
} 

print(p1, vp = define_region(1, 1))
print(p2, vp = define_region(2, 1))
print(p3, vp = define_region(1, 2))
print(p4, vp = define_region(2, 2))

source

https://rpubs.com/willibrordus_bayu/covid_indonesia

p1 <- qplot(mpg, wt, data=mtcars)
p2 <- p1
p3 <- p1 + theme(axis.text.y=element_blank(), axis.title.y=element_blank())

grid.arrange(arrangeGrob(p1,p2, ncol=1, nrow=2),
         arrangeGrob(p3, ncol=1, nrow=1), heights=c(4,1), widths=c(2,1))