Data Source

library(dplyr)
library(tidyr)
library(grid)
library(scales)
library(ggplot2)
us <- data %>%
  filter(State == "USA") %>%
  gather(Year, Fatality, X1994:X2013) %>%
  separate(Year, c("left","Year"), sep="X") %>%
  select(-left)%>%
  arrange(Year)
head(us, 3)
##   State Year Fatality
## 1    45 1994     1.73
## 2    45 1995     1.73
## 3    45 1996     1.69
us_base <- us[us$Year==1994,3]
us$us_baseline <- us_base

us <- us %>% mutate(us_change = (Fatality-us_baseline)/us_baseline)

head(us)
##   State Year Fatality us_baseline   us_change
## 1    45 1994     1.73        1.73  0.00000000
## 2    45 1995     1.73        1.73  0.00000000
## 3    45 1996     1.69        1.73 -0.02312139
## 4    45 1997     1.65        1.73 -0.04624277
## 5    45 1998     1.58        1.73 -0.08670520
## 6    45 1999     1.55        1.73 -0.10404624
states <- data %>%
  filter(State != "USA") %>%
  gather(Year, Fatality, X1994:X2013) %>%
  separate(Year, c("left","Year"), sep="X") %>%
  select(-left) %>%
  arrange(Year) %>%
  filter(Fatality != "NA")

state_base <- states %>%
  filter(Year == 1994) %>%
  select(State, State_Baseline = Fatality)

states <- states %>%
  left_join(state_base) %>%
  arrange(State) %>%
  mutate(state_change = (Fatality-State_Baseline)/State_Baseline)

states$Year <- as.numeric(states$Year)
us$Year <- as.numeric(us$Year)

rank <- states %>% 
  filter(Year == 2013) %>% 
  arrange(desc(state_change)) %>%
  mutate(rank = seq(1,length(State), by=1)) %>%
  filter(rank < 6 | rank > 46 )

p <- ggplot(states, aes(Year, state_change, group=State)) +
  theme_bw() +
  theme(plot.background = element_blank(),
        panel.grid.minor = element_blank(),
        panel.grid.major.x = element_blank(),
        panel.grid.major.y = element_line(linetype = 3, colour = "grey50"),
        panel.border = element_blank(),
        panel.background = element_blank(),
        text=element_text(size=20),
        axis.ticks = element_blank(),  
        axis.title = element_blank()) +
  geom_line(colour="grey90", alpha=.9)+
  labs(title="Changes in Traffic Fatality Rates [1994-2013]")+
  scale_x_continuous(breaks = c(1995, 2000, 2005, 2010))


p <- p +
  geom_line(data=us, aes(Year, us_change, group=1), linetype=5, size = 1.2)

p <- p +
  geom_line(data=filter(states, State==44), 
            aes(Year, state_change, group=State), colour="#D8B70A", size = 1.5)
p <- p +
  geom_line(data=filter(states, State==9), 
            aes(Year, state_change, group=State), colour="#046C9A",size=1.2) +
  geom_line(data=filter(states, State==35), 
            aes(Year, state_change, group=State), colour="#C27D38",size=1.2)

p1 <- p + annotate("text", x = 2014.2, y = 0.07, label = "N. Dakota (5%)", color="#C27D38", size=5)
p2 <- p1 + annotate("text", x = 2014, y = -0.21, label = "Texas (-22%)", color="#D8B70A", size=5)
p3 <- p2 + annotate("text", x = 2014, y = -0.37, label = "USA (-37%)", color="black", size=5)
p4 <- p3 + annotate("text", x = 2014, y = -0.71, label = "D.C. (-72%)", color="#046C9A", size=5)
p4

Prepared by: Subasish Das