Mapping Ebola with D3

Ebola has been a big topic in the news lately, but just how bad is it, and how quickly is it spreading? As a part of a web programming course in the iSchool at the University of Washington, I developed an interactive visualization of the 2014 spread of the disease using D3 and web technologies.

View the Visualization

The Ebola virus infects humans and other primates and is characterized by it’s symptoms: fever, pain, vomiting, diarrhea, and a decline in function of the liver and kidneys. The disease is spread through direct contact with the bodily fluids of the infected, and kills 25 to 90% of patients.

Since March of 2014, Ebola has been spreading throughout Africa and to other countries such as the high profile cases in Spain and the United States. Using data compiled by Caitlin Rivers, a graduate student in computation epidemiology at Virginia Tech, I have developed a visualization of the spread of disease over time and throughout the world.

This project was created in collaboration with Dr. David Stearns at the iSchool.

How it’s Built

The visualization was built with modern web technologies, and as a result, works only in modern browsers with support for a few key technologies– namely, SVG. Coordination of the SVG objects was done with D3, a popular Javascript library for visualizations.

Building the Map

The map is the centerpiece of the visualization, which was quite easy to build thanks to D3’s built in support for GeoJSON and plugins for TopoJSON. The TopoJSON data was generated using publicly available data from Natural Earth, and using a script provided by Mike Bostock.

Finding Data

Though the CDC provides some summary statistics on the disease, country and city level data is often scattered throughout reports published by different organizations. Fortunately, Caitlin Rivers and various other volunteers have been collaborating on a public GitHub repository that normalizes the data into CSV files.

Open Source

The source code is also available on GitHub.

Subscribe to my mailing list

Get my latest posts delivered directly to your inbox