Original


Annual US traffic fatalities per billion vehicle miles traveled (red), miles traveled (blue), per one million people (orange), total annual deaths (light blue), VMT in 10s of billions (dark blue) and population in millions (teal), from 1921 to 2017).


Objective

Automobile accidents are one of the leading causes of death and fatal injuries among healthy U.S. citizens. The graph tries to depict the motor vehicle fatality rates in the United States, in terms of total deaths, deaths per million people and deaths per billion VMT (vehicle miles travelled) from 1921 to 2017.

Target Audience

  • Citizens of the United States using motor vehicle transportation.

Issues

  • Dual Axes: The presence of dual axes makes it confusing for the viewers to associate and interpret the 5 lines that have been plotted.

  • Misleading scales: The scale of the left y-axis does not match the scale of all the plotted lines which is misleading when trying to interpret the data.

  • Visual bombardment: The presence of the dual axes along with 5 intersecting line plots, each with its own scale is overwhelming for the readers and takes them a long time to interpret the visualisation.

Image Reference

Code

The following code was used to fix the issues identified in the original.

library(ggplot2)
library(readr)
library(dplyr)
library(magrittr)
library(tidyr)
library(gridExtra)
srcdata <- read.csv("D:/1Studies/Sem2/DataViz/assignment2/accidents.csv",sep = ",",stringsAsFactors = F)
srcdata <- srcdata[,1:6]
srcdata <- filter(srcdata,srcdata$Year>=1921)

plot1 <- ggplot(srcdata,aes(x=Year, y=Deaths)) +
  geom_line(size= 1.3, color="#56B4E9") +
  ggtitle("Total Deaths") +
  xlab("Year") + ylab("Number of Deaths")  

#Scaling population to millions
plot2 <- ggplot(srcdata,aes(x=Year, y=Population/1000000)) + 
  geom_line(size= 1.3, color="#009E73") +
  ggtitle("Population") +
  xlab("Year") + ylab("Population (millions)")

#Scaling fatalities per population to millions
plot3 <- ggplot(srcdata,aes(x=Year, y=Fatalities.per.100.000.population*10)) +
  geom_line(size= 1.3,color="#CC79A7")+
  ggtitle("Deaths as per population") +
  xlab("Year") + ylab("Deaths (per million)")

plot4 <- ggplot(srcdata,aes(x=Year, y=VMT..Vehicle.miles.traveled..billions.)) +  
  geom_line(size=1.3,color="#0072B2")+
  ggtitle("VMT") +
  xlab("Year") + ylab("VMT (Billion)")

#Scaling fatalities per VMT to billions
plot5 <- ggplot(srcdata,aes(x=Year, y=Fatalities.per.100.million.VMT*10)) + 
  geom_line(size = 1.3,color="#E69F00") +
  ggtitle("Deaths as per VMT") +
  xlab("Year") + ylab("Deaths (per billion)")

Data References

Reconstruction

The following plot fixes the main issues highlighted under the original.