Covid Tracking

View COVID-19 Trends

Load libraries and Data

library(covid19.analytics)
library(data.table)
library(sqldf)
library(plotly)
library(openair)

## https://cran.r-project.org/web/packages/covid19.analytics/vignettes/covid19.analytics.html
##https://www.kaggle.com/modesty520/covid-19-detailed-visualization

iuh_colors <- c("#990000", "#EEEDEB","#01426A")
covid_data <- covid19.US.data()
## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
## -------------------------------------------------------------------------------- 
## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
## --------------------------------------------------------------------------------
indiana <- subset(covid_data, Province_State == 'Indiana')
arkansas <- subset(covid_data, Province_State == 'Arkansas')

setDT(indiana)


indiana_long <- melt(indiana, id.var = c("Country_Region", "Province_State",
                                           "Lat", "Long_"))


indiana_summary <- sqldf("select variable as date, sum(value) as cases
                           from indiana_long
                           group by variable")

setDT(indiana_summary)
indiana_summary[ , new := cases - shift(cases)]


in_plot <- plot_ly(indiana_summary, x = ~date, y = ~cases, 
                   type = 'scatter', 
                   mode = 'lines',
                   colors=iuh_colors,
                   hoverinfo='text',
                   text = ~paste('</br> Date: ', date,
                                 '</br> Cases: ' , prettyNum(cases, big.mark=",",scientific=FALSE))
)

in_plot_new <- plot_ly(indiana_summary, x = ~date, y = ~new, 
                   type = 'bar', 
                   colors=iuh_colors,
                   hoverinfo='text',
                   text = ~paste('</br> Date: ', date,
                     '</br> Cases: ' , prettyNum(new, big.mark=",",scientific=FALSE),
                     '</br> Cumulative: ', prettyNum(cases, big.mark=",",scientific=FALSE))
)

Cumulative Cases:

This is helpful to get a quick overview of cases over time. You can really see the growth taking off in October.

in_plot <- plot_ly(indiana_summary, x = ~date, y = ~cases, 
                   type = 'scatter', 
                   mode = 'lines',
                   fill='tozeroy',
                   hoverinfo='text',
                   line = list(color=iuh_colors[1]),
                   fillcolor = list(color=iuh_colors[1]),
                   text = ~paste('</br> Date: ', date,
                                 '</br> Cases: ' , prettyNum(cases, big.mark=",",scientific=FALSE))
) %>% layout(title = 'Cumulative Covid Cases (Indiana)', xaxis=list(autotick=F, dtick=30))

in_plot
in_plot_new <- plot_ly(indiana_summary, x = ~date, y = ~new, 
                   type = 'bar', 
                   marker = list(color=iuh_colors[1]),
                   hoverinfo='text',
                   text = ~paste('</br> Date: ', date,
                                 '</br> Cases: ' , prettyNum(new, big.mark=",",scientific=FALSE))
) %>% layout(title = 'New Covid Cases (Indiana)', xaxis=list(autotick=F, dtick=30))

in_plot_new

New Cases - Calendar View

I find this view very intuitive. As plotted here, each year is on it’s own plot and therefore has it’s own scale.

date <- seq(from=as.Date(min(indiana_summary$date)),
            by=1,
            to = as.Date(max(indiana_summary$date)))


in_new <- indiana_summary[,"new"]
cal_plot <- calendarPlot(data.frame(in_new, date), pollutant = 'new', year = 2020, main = "New Cases - 2020")

cal_plot <- calendarPlot(data.frame(in_new, date), pollutant = 'new', year = 2021, main = "New Cases - 2021")

cal_plot <- calendarPlot(data.frame(in_new, date), pollutant = 'new', year = 2022, main = "New Cases - 2022")