Portfolio Project 4

Incorporating Interactivity

Billion Dollar Disasters: Frequency and Costs (featuring interactivity)

library(dplyr)
library(tidyverse)
library(ggplot2)
library(DT)
library(plotly)
read_disaster_data <- function(file_path) {
  data <- read_delim(file_path, delim = ",", skip = 2, show_col_types = FALSE)
  data %>%
    mutate( 
      Name = str_remove(Name, "\\(.*\\)"),
      Disaster = as.factor(Disaster),
      `Begin Date` = ymd(`Begin Date`), 
      `End Date` = ymd(`End Date`),
      `CPI-Adjusted Cost` = as.numeric(`CPI-Adjusted Cost`),
      `Unadjusted Cost` = as.numeric(`Unadjusted Cost`),
      Deaths = as.numeric(Deaths)
    )
}
mega_data <- list.files("data", pattern = "[.]csv$", full.names = TRUE)
disaster_data <- map_df(mega_data, read_disaster_data)
billion_dollar_disasters <- write_csv(disaster_data, "Results/billion_dollar_disasters.csv")
billion_dollar_disasters <- billion_dollar_disasters %>%
  mutate(year = year(`Begin Date`))
ggplot(billion_dollar_disasters) +
  geom_bar(aes(x = year, fill = Disaster)) +
  scale_color_viridis_d()+
  labs(x = "Year",
       y = "Count",
       fill = "Disaster type",
       title = "Disaster Type by Year") +
  theme_minimal()

datatable(billion_dollar_disasters, rownames = FALSE, filter = "top", options = list(scrollX = TRUE)) %>%
  formatStyle(columns = colnames(billion_dollar_disasters), fontSize = '10pt')


cost_per_year <- billion_dollar_disasters %>%
  group_by(year) %>%
  summarize(total_cost = sum(`CPI-Adjusted Cost`, na.rm = TRUE))
cost_per_year_interactive <- ggplot(cost_per_year, aes(x = year, y = total_cost)) +
  geom_line(color = "blue", size = .8) +
  scale_y_continuous(labels = scales::label_dollar(scale = 1/1000, suffix = "B")) +
  labs(x = "Year",
       y = "Combined Adjusted Cost in Billions",
       title = "Combined Adjusted Cost (in Billions) by Year")+
  theme_minimal()

ggplotly(cost_per_year_interactive)