Chapter 10 Tufte’s Principles of Data-Ink

Huazhang Liu and Jianfeng Zhuang

10.1 Overview

As we are building a new data visualization, we often add more elements to the graph that may only provide small details but takes more attention away from the main takeaways. To solve this issue, Edward Tufte, an expert whose work has contributed significantly to data visualization, introduces the concept of data-ink.

This section covers the concepts and examples of data-ink introduced by Edward Tufte in The Visual Display of Quantitative Information.

The term, ‘data-ink’, is defined as the total ink on a graph that represents data. Tufte claims that good graphical representations maximize data-ink and erase as much non-data-ink as possible. Thus, he defines the data-ink ratio is the proportion of a graphic’s ink devoted to the non-redundant display of data-information. It should equal to (1 - the proportion of graphics that can be erased without loss of data-information).

Tufte gives the following five principles:

  1. Above all else show data.
  2. Maximize the data-ink ratio.
  3. Erase non-data-ink.
  4. Erase redundant data-ink.
  5. Revise and edit of data-ink:

The following sections introduce examples based on Tufte’s techniques about data-ink.

We use ggplot2, ggtheme and ggExtra packages to draw the examples with data-ink requirements.

10.3 Range-frame (or quartile-frame) scatterplot

Compared with the traditional axis we used, the range-frame is defined as the axis that is only on the range of the data points. A range-frame scatterplot only provides the most appropriate axis lines.

We use the mtcars (Motor Trend Car Road Tests) dataset to give the following examples, and use geom_rangeframe() in ggthemes to satisfy this requirement.

10.4 Dot-dash (or rug) scatterplot

Dot-dash scatterplot is the scatterplot with the tick marks next to the axis that represent the marginal distribution of the data. Compared with the previous two scatterplots, the dot-dash scatterplot is easier to see the distribution on one axis.

We use geom_rug() from ggplot2 to exhibit the marginal distribution.

10.5 Marginal histogram scatterplot

Similar with dot-dash scatterplot, marginal histogram scatterplot use histogram to mark the marginal distribution of the data. This is useful when there is a huge amount of data points.

We use quakes dataset, and use ggMarginal() from ggExtra to exhibit the marginal distribution.

ggMarginal() also provides marginal density scatterplot and marginal boxplot scatterplot that use density lines or boxplots to mark the marginal distribution of the data.

10.6 Minimal boxplot

Although it is hard for boxplots to include zero non-data inks, minimal boxplot uses as little non-data ink as possible. In this case, minimal boxplot gets rid of the “box” but uses one dot and blank space to represent the median and interquartile range.

In ggtheme, geom_tufteboxplot() is used to represent minimal boxplot.

10.8 Sparklines

Edward Tufte states in Beautiful Evidence that,

“A sparkline is a small, intense, simple, word-sized graphic with typographic resolution. Sparklines mean that graphics are no longer cartoonish special occasions with captions and boxes, but rather sparkline graphics can be everywhere a word or number can be: embedded in a sentence, table, headline, map, spreadsheet, graphic.”

The difference between the typical line charts and Tufte-style sparklines is that sparklines are small and single. They are small enough that they can be able to embedded in the text. Usually, several sparklines may be grouped together. So it is essential to do the scaling. Otherwise, it is hard to group them.

In this section, we use the example dataset provides in the journal Tufte in R. The graph shows the maximum, minimum, and last value of each sparkline.

10.9 References and external resources

  • Tufte in R: introduces several graphs following Tufte’s techniques by using basic R plot, ggplot2, interactive plots with highcharter, etc. This journal is written by Lukasz Piwek.
  • Above All Else Show the Data: based on Lukasz Piwek’s journal, Tufte in R, this introduces some other interactive plots by using plotly.
  • Data-ink Ratio: introduces the concept of data-ink and data-ink ratio
  • Tufte’s Principles: introduce Tufte’s principles, including data-ink.