Six Awesome Strategies to Visualize Temporal Changes Effectively

This article summarizes effective strategies to visualize temporal changes, illustrated with inspiring graphic examples.

Use Line Segments to Contrast Two Time Points

The following graph compares 1800 and 2015 regarding human life expectancy, population size, and GDP per capita for each country. The points signify the specific time points, and the line segments provide a clear visual trajectory. Additionally, the light grey rectangles serve to underscore the distinction between the two time periods.

See R source code; inspired by Lisa Charlotte Rost by Datawrapper.

Use Arrows to Emphasize Direction of Changes

In addition to line segments, arrows are telltale elements that highlights direction of changes from one time point to another. The graph below employs this strategy to show the changes of seats held by women in national parliaments.

See R source code; inspired by demo graphics @ Datawrapper

Use Lines to Depict Continuous Changes

Lines are intuitive indicators of continuous changes recorded by a string of data points. The following plot shows the dynamics of smoking popularity in major western countries from 1880s to 2000s, and spotlighted such changes in United States, Germany and France in bright colors.

See R source code; inspired by demo graphics @ Datawrapper

On top of tracing temporal changes in each individual country, the average trend lines and variability ribbons can be added to enrich the graphic information. In the following plot, each thin line tracks the changes in human life expectancy in each country. On a continent-wise basis, a central thick line shows the average life span, and the shaded ribbon represents the variability around this average trend, showing one standard deviation above and below the mean.

Use Ribbons to Illustrate Total Values at Each Time Point

The above line plots have shown dynamic changes for each individual country. When the cumulative sum of y-values at each time point is of interest, the area plot is ready to achieve this goal. Area plots are essentially stacked line plots, with filled colors between lines to form continuous bands or ribbons.

The following plot shows the dynamics of migration population from worldwide to the U.S. in the past two hundred years. It shows both country-wise and total population number at each time point.

See ggplot2 demo. with ggalluviam package; inspired by Mirko Lorenz with Datawrapper.

A variant of the area / alluvium plot is the stream plot, which gives an extra touch of aesthetic enhancement. The following plot shows the changing popularity of movie genres in the past four decades.

See R source code with the ggstream package.

Use Heatmap to Present Temporal Changes

Heatmaps are another powerful tool with an engaging appeal to show temporal changes, and maps numeric values to a color scale. The following plots visualize the yearly incidences of eight infectious diseases across the U.S. states before and after the introduction of vaccines. It impressively highlights the power of vaccination in the control of disease spread.

See R source code; inspired by Tynan DeBold and Dov Friedman in WSJ.

While colors effectively reflect the overall trend of changes, they are not as easily interpreted for precise numeric values when compared to a simple y-axis. It can be helpful to augment a heatmap with other plots. The following heatmap displays monthly sunspot activities spanning the past two hundred years. Adjacent to the heatmap, a synchronized line plot illustrates the continuous changes in sunspot activity along the y-axis, facilitating a more straightforward interpretation of fluctuations in the sunspot activities.

Visualize Changes in Animation

Data animation was made famous back in 2007 by Hans Rosling in his legendary TED talk the best stats you’ve ever seen. Yet even today to render data to animation appears an appalling task to many data analysts - but it does not have to be! In fact, with the awesome R gganimate package, render a static plot to animation can be as simple as adding a single line of code “faceting” the dataset based on a time variable. The following animated population pyramids show the human population structures in Germany in the past (in dark colors) and in the future with simulated data (in bright colors).

See R source code with gganimate package.