> — Edward Tufte, The Visual Display of Quantitative Information
Learning Objectives
- Define Tufte's data-ink ratio and explain why maximizing it generally improves chart readability
- Identify the five categories of chart-junk: decorative, structural, redundant, default, and dimensional
- Apply a systematic declutter procedure — remove, lighten, simplify — to any chart
- Distinguish between non-data ink that is harmful (chart-junk) and non-data ink that aids comprehension (labels, reference lines, annotations)
- Evaluate a default chart and produce a decluttered redesign with explicit before/after comparison
- Recognize when minimalism goes too far — the 'data desert' failure mode where essential context is lost
- Explain the empirical counter-argument to strict Tufte minimalism (Bateman et al. 2010 on embellishment and memorability) and where it does and does not apply
In This Chapter
Chapter 6: Data-Ink Ratio and the Art of Removing Clutter
"Above all else show the data." — Edward Tufte, The Visual Display of Quantitative Information
You have spent five chapters learning what to show and how to think about showing it. You know that visualization is an argument (Chapter 1), that the eye processes visual channels in a ranked hierarchy of accuracy (Chapter 2), that color is a perceptual variable and not decoration (Chapter 3), that every chart carries editorial weight whether the author admits it or not (Chapter 4), and that the chart type must follow from the question being asked (Chapter 5). These are the foundations. They answer the questions "why visualize?", "what does the eye perceive?", "how do you encode without deceiving?", and "which chart fits which question?".
This chapter begins the work of Part II — the craft of turning a technically correct chart into one that actually communicates. The difference is real and often large. A correctly chosen bar chart with the right axes, the right color palette, and the right statistical summary can still be unreadable if it is buried under default gridlines, heavy borders, three-dimensional shadows, a tick mark every five pixels, a legend that sits on top of the data, and a title formatted in the plotting library's stock font. You chose the right chart. The chart chose you back, defaulted to ugly, and handed you something you cannot publish.
The fix is not to start over. The fix is to systematically remove, lighten, and simplify until every drop of ink on the chart is working for the viewer. This is the discipline that Edward Tufte made famous in 1983, and it remains the single most reliable way to turn a bad chart into a good one without changing the data, the chart type, or the underlying analysis. It is also the single most-ignored discipline in practical data visualization, because the default settings of every plotting library in the world push you in the opposite direction.
The central idea of this chapter is the data-ink ratio. It is a simple formula, a practical heuristic, and a philosophy all at once. It says: of all the ink on your chart, what fraction represents actual data? The answer is almost always "less than you would hope." The point of the chapter is to move that fraction upward — not by adding data, but by removing everything else. By the end of the chapter, you will have a systematic procedure for decluttering any chart, a taxonomy of the common forms of chart-junk, a sense of when minimalism goes too far, and the beginning of an aesthetic sensibility that will serve you through Parts III through VIII.
No code in this chapter. We are still in Part II — the library-agnostic craft section. We will show concrete matplotlib code for the declutter operations in Chapter 12, once you have learned matplotlib's architecture in Chapter 10 and its essential chart types in Chapter 11. For now, the principles come first. When you reach the matplotlib chapters, you will already know what you are trying to achieve — you just will not yet know the exact function calls.
6.1 Tufte's Data-Ink Ratio
The Formula
Edward Tufte introduced the data-ink ratio in The Visual Display of Quantitative Information (1983). Like the lie factor from Chapter 4, it is a deceptively simple metric built around a ratio:
$$\text{Data-Ink Ratio} = \frac{\text{Data ink}}{\text{Total ink used to print the chart}}$$
Data ink is the ink on the chart that directly represents numbers — the bars of a bar chart, the dots of a scatter plot, the lines of a line chart, the wedges of a pie chart (though we have already agreed we are not using pie charts often). Data ink encodes quantitative or categorical information that the viewer needs to read the data.
Total ink includes data ink plus everything else: gridlines, borders, tick marks, axis spines, background shading, decorative frames, 3D shadows, legend boxes, title backgrounds, watermarks, and every other mark on the page that is not directly encoding the data.
A chart with a high data-ink ratio has most of its visible marks doing useful data encoding work. A chart with a low data-ink ratio has most of its visible marks doing nothing — or, worse, actively competing with the data for the viewer's attention.
Tufte's argument was not that non-data ink should be zero. That would be absurd. Axis labels are non-data ink, and you cannot read a chart without axis labels. A reference line is non-data ink, and reference lines are often essential for interpretation. The data-ink ratio is a directional heuristic, not a literal target: given two otherwise-equivalent charts, the one with a higher data-ink ratio is usually easier to read. The principle pushes you to examine every non-data mark and ask whether it is earning its place.
A Worked Example
Imagine a default matplotlib bar chart showing Meridian Corp's quarterly revenue for four quarters. You produce it with plt.bar() and no customization. The output, on most modern matplotlib installations, includes:
- Four rectangular bars (data ink — good)
- Four category labels below the bars (non-data ink, necessary)
- A y-axis with tick marks and numerical labels (non-data ink, necessary for quantitative reading)
- An x-axis line at the bottom (spine — non-data ink)
- A y-axis line on the left (spine — non-data ink)
- A top spine (non-data ink, decorative)
- A right spine (non-data ink, decorative)
- Horizontal gridlines across the plotting area (non-data ink, possibly useful)
- Vertical gridlines between bars (non-data ink, redundant with the bars themselves)
- A default title in sans-serif (non-data ink, necessary when titled)
- A rectangular border around the entire figure (non-data ink, decorative)
The data ink is the four bars. The non-data ink includes two necessary elements (y-axis tick labels, x-axis category labels), a few that help interpretation (horizontal gridlines, if they are light enough not to compete), and several that are pure decoration (top spine, right spine, vertical gridlines, figure border). The data-ink ratio for this default chart is probably around 0.15 to 0.25 — most of the ink on the page is not data.
Now imagine the decluttered version. Remove the top spine. Remove the right spine. Remove the vertical gridlines. Lighten the horizontal gridlines to a pale gray. Remove the figure border. Keep the axis labels. Keep the title. Keep the bars. The data ink is unchanged. The total ink has dropped dramatically. The data-ink ratio has perhaps doubled or tripled — and the chart looks cleaner, not worse.
This exercise is the heart of the chapter. The declutter procedure in Section 6.4 formalizes it. The categories of chart-junk in Section 6.3 tell you what to look for. But the mental move is the same one every time: for every mark on the chart, ask what is this for? and be willing to accept "nothing" as an answer.
Why the Ratio Matters
The data-ink ratio is not a mathematical law. It does not guarantee that a higher-ratio chart is always better. What it does is redirect the chart maker's attention from adding to subtracting, and in practice, subtraction is where most design improvements come from.
The empirical case for the ratio rests on several perceptual facts that we have already developed:
Visual clutter competes with data for attention. Pre-attentive processing (Chapter 2) is a parallel system with limited throughput. Every non-data mark on the chart consumes a small piece of that throughput. A chart with many non-data marks forces the viewer's visual system to work harder to find the data, which slows comprehension and increases error rates. A chart with fewer non-data marks lets the data pop out.
Gridlines and borders can violate the encoding hierarchy. Gridlines are straight lines, just like line-chart series. If the gridlines are drawn at the same visual weight as the data, the viewer's eye cannot distinguish signal from structure pre-attentively. This is not hypothetical — it is a regular experience of anyone who has tried to read a default Excel chart with thick gridlines and thin data lines. The structural lines compete with the encoded lines for the same perceptual channel (position on a common scale), and the eye picks up the more prominent ones first. Making the gridlines fainter than the data restores the hierarchy.
Non-data ink often encodes nothing but "this is a chart." The figure border, the thick spine, the 3D shadow, the default background color — these marks exist not because the chart maker chose them but because the plotting library defaults to them. They signal "this is a chart" to a reader who already knows it is a chart. They add nothing but visual weight. Deleting them leaves the chart looking more professional, not less.
Decluttering improves the ethics of the chart. This is a subtle connection to Chapter 4. A cluttered chart is harder to read accurately, which means the viewer is more likely to form impressions from the most salient features — which are often the decorative ones. A clean chart makes the data the most salient feature, which reduces the odds of the viewer forming an impression that the data does not support. Decluttering is a form of honesty.
Check Your Understanding — Sketch or imagine a default Excel bar chart you have seen recently. Identify every visual element on it. Categorize each element as data ink or non-data ink. For each non-data-ink element, ask: does it help the viewer understand the data, or could it be removed without loss? Count the items you could remove. That count is a rough measure of how much the chart would benefit from decluttering.
6.2 Data Ink, Non-Data Ink, and Redundancy
The Simple Classification
To apply the data-ink ratio in practice, you need to be able to look at a chart and classify every mark into one of three categories: data ink, useful non-data ink, or wasted non-data ink. The first is sacred. The second is justified. The third should be deleted.
Data ink is anything that directly represents a number, a category, or a relationship in the dataset. In a bar chart, the bars. In a scatter plot, the dots. In a line chart, the line. In a heatmap, the colored cells. If you remove data ink, you remove information.
Useful non-data ink is ink that does not encode data but helps the viewer interpret the data. Axis labels. Numerical tick labels. Scale legends. Reference lines for thresholds. Annotations pointing out important features. Titles and subtitles that state the finding. Source attributions that credit the data. Grid lines when they are truly needed to help the viewer read quantitative values. All of these are non-data, but deleting them would make the chart harder to understand, not easier.
Wasted non-data ink is ink that neither encodes data nor helps the viewer interpret it. The top spine and right spine on a standard bar chart (they enclose the plotting area but serve no reading function). Heavy gridlines on a chart where the viewer does not need to read exact values. A legend that duplicates information already shown by direct labeling. Background shading that does not encode anything. A border around the figure. A shadow under each bar. 3D perspective effects. These are the targets of decluttering.
The judgment call is usually in the "useful versus wasted" boundary. Reasonable designers disagree about how dark gridlines should be, about whether axis spines should stay or go, about how much annotation is too much. The framework does not try to settle these debates. It asks you to make the decisions deliberately rather than by accepting software defaults. A slightly heavier gridline you chose is better than a slightly lighter gridline the software chose.
Redundant Encoding
A related concept is redundant encoding: the same data feature encoded twice in the same chart. Redundancy is not always bad — sometimes doubled encoding reinforces the signal, especially for accessibility (encoding a categorical variable with both color and shape lets colorblind viewers still read the chart). But redundancy is often wasted ink.
Consider a bar chart where each bar is labeled with its numerical value at the top of the bar and the y-axis has tick marks and numerical labels that would let the viewer read the same value. Both are legitimate design choices. Both at once is redundancy. If the direct labels are good enough, you can delete the y-axis gridlines and tick labels entirely and the chart will be cleaner. If the y-axis readings are good enough, you can delete the direct labels. Choosing one or the other is a deliberate decluttering move.
A more subtle redundancy: a chart with a legend and direct labeling on the lines. The viewer only needs one. Delete the legend, keep the direct labels, and the chart is cleaner — and easier to read, because the viewer's eye does not have to move back and forth between the line and the legend to identify the series.
Redundant encoding is the source of a disproportionate amount of chart clutter because it often feels "safe" to the chart maker. Adding a legend in addition to direct labels feels like insurance. In practice, it is noise. Once you have chosen a primary encoding, be willing to delete the backup. The primary encoding is doing the work.
The Concept of an Ink Budget
Here is a way to make the data-ink-ratio concept concrete: imagine you have been given an ink budget for the chart. A fixed total amount of ink. Every mark you draw subtracts from the budget. The question is how to spend it.
The answer is: spend most of it on data. Spend some on the useful non-data elements (labels, tick marks, titles, essential gridlines). Spend zero on decoration, redundancy, and default chart-junk. When you run out of budget, stop adding things. If you need something you do not have budget for, find something less useful to remove and reallocate.
The ink budget is a mental model, not a real constraint — the plotting library will let you draw as much as you want. But the ink budget captures the essential point: every non-data element competes with every other element for the viewer's attention, and the finite capacity of visual attention is a real budget even if the ink is free. Spending attention on a thick border is spending attention you could have spent on the data.
Check Your Understanding — Take a chart you made recently. For each mark on the chart, answer: data ink, useful non-data ink, or wasted non-data ink. If you find more than two items in the "wasted" category, the chart is a candidate for the declutter procedure in Section 6.4.
6.3 The Five Categories of Chart-Junk
Tufte used the term chart-junk for non-data elements that add visual complexity without adding information. Chart-junk is the target of the decluttering procedure. To apply the procedure well, you need a mental taxonomy of the forms chart-junk commonly takes. This section introduces five categories, each with characteristic examples.
6.3.1 Decorative Chart-Junk
Definition: Visual elements added for aesthetic or stylistic reasons that do not encode or help interpret the data.
Examples:
- Drop shadows under bars or data points.
- Gradient fills that transition from dark to light across bars.
- Decorative borders around the figure or individual subplots.
- Background patterns or textures in the plotting area.
- Clip art icons inside bars (e.g., a bar representing coffee sales with a small coffee cup icon inside the bar).
- Watermarks that are not logos or source attributions.
- Stylized fonts for titles and labels that prioritize visual impact over legibility.
Why it exists: Decorative chart-junk usually comes from the designer's desire to make the chart "look professional" or to match a corporate aesthetic. It is common in business intelligence tools that target non-technical users, where visual flourish is marketed as a feature.
The fix: Delete it. Professional visualizations are cleaner, not flashier. If a corporate style guide demands certain decorative elements, push back on the style guide — or, if you cannot, comply with the letter of the rule while minimizing the visual weight of the compliance (thin borders instead of thick, single color instead of gradient, small logo in the corner instead of watermark on the data).
6.3.2 Structural Chart-Junk
Definition: Visual elements that represent the chart's own structure (frames, spines, borders) rather than the data or its interpretation.
Examples:
- The top and right spines of a standard bar chart (the lines that enclose the plotting area but do not serve a reading function).
- The rectangular border around the entire figure.
- The border around the legend box.
- The border around the title or subtitle.
- Ticks on the axes that do not have corresponding labels.
- Long tick marks that extend dramatically beyond the axis line.
Why it exists: Structural chart-junk is almost entirely the result of plotting library defaults. Matplotlib, for historical reasons dating to its roots in scientific plotting, draws all four spines by default. Excel draws heavy borders and tick marks unless you override them. Tableau draws backgrounds and borders unless you apply a clean theme. The structural chart-junk is the default appearance, and most users never touch it.
The fix: Systematically remove or lighten structural elements. Top and right spines: usually delete. Figure borders: delete. Legend borders: delete. Tick marks: shorten significantly and draw them thin. Unused ticks: delete. We will cover the exact matplotlib commands in Chapter 12.
6.3.3 Redundant Chart-Junk
Definition: Visual elements that duplicate information already conveyed elsewhere in the chart.
Examples:
- A legend on a chart where each series is directly labeled.
- Numerical value labels on each bar and a labeled y-axis.
- A title that says "Bar Chart of Revenue by Quarter" when the axes already make this obvious.
- Color coding of bars that also have category labels in the same position.
- A caption that repeats the axis labels.
- A table of values beneath a chart that already shows the values.
Why it exists: Redundant chart-junk comes from wanting to "make sure" the viewer gets the message. The designer doubles the encoding for safety. In practice, the duplication splits the viewer's attention and introduces extra visual weight without improving comprehension.
The fix: Choose the best single encoding for each piece of information and delete the backups. If direct labeling is cleaner than a legend, delete the legend. If the y-axis is clearer than per-bar value labels, delete the value labels. If the title is repetitive with the axes, rewrite the title as an action title (Chapter 7) that states the finding. Redundancy is a choice, and you can choose to delete it.
6.3.4 Default Chart-Junk
Definition: Visual elements that appear because the plotting software's default settings include them, not because the chart maker made a deliberate choice.
Examples:
- Default gridline colors (often too dark).
- Default tick mark size and density (often too long and too many).
- Default background colors (Tableau's gray, Excel's light blue, matplotlib's off-white in some themes).
- Default color palettes that do not match the chart's needs (Excel's saturated primaries for a quantitative heatmap, for example).
- Default label rotation (often 0 or 90 degrees regardless of whether labels overlap).
- Default legend placement in the worst possible location (overlapping the data).
Why it exists: Software defaults are designed to produce a chart quickly for anyone, regardless of intent. They cannot anticipate the viewer's needs, the dataset's peculiarities, or the communication goal. Defaults are a starting point, not a finished product.
The fix: Override defaults deliberately. For every chart you produce for publication, go through each default and ask: is this default serving my chart, or is it just the default? Most of the time, the answer is "just the default," and changing it will improve the chart. In Part III, we will build a personal set of matplotlib rcParams that override the worst defaults globally, so you do not have to fight the same battles chart by chart.
6.3.5 Dimensional Chart-Junk
Definition: Visual elements that add a false dimension to the chart — three-dimensional effects, perspective views, tilted axes.
Examples:
- 3D bar charts where the bars have depth.
- 3D pie charts where the "pie" is tilted and the front slices appear larger than the back slices.
- Perspective effects on line charts.
- Isometric projections used for decorative effect.
- "Ribbon" charts where line series are drawn as 3D strips.
Why it exists: Dimensional chart-junk is often sold as "making the chart look more sophisticated." It appears prominently in business intelligence tools, corporate slide templates, and old Excel chart types that have never been removed.
The fix: Delete it, always. Chapter 4 made the case that 3D effects introduce distortion into every comparison the viewer attempts and decrease encoding accuracy. There is no legitimate use case for 3D effects in quantitative visualization. If the chart is on a slide deck where the audience is conditioned to expect 3D, replace the 3D effect with typographic polish, careful color, and thoughtful layout. These improve comprehension; 3D effects do not.
Check Your Understanding — For each category of chart-junk, find a real example in your recent work or in publicly available charts. For each example, describe what would change if the chart-junk were removed. Does the chart become harder to read, or just cleaner?
6.4 The Declutter Procedure
A Three-Step Method
The declutter procedure is a simple, systematic sequence you can apply to any chart. It has three steps in order: remove, lighten, simplify. Each step is a separate pass over the chart. Each pass removes a category of visual noise without touching the underlying data or the chart type. By the end of all three passes, the chart will be dramatically cleaner.
Step 1: Remove. Delete every element that does not earn its place. Start with the structural and decorative chart-junk — top spine, right spine, figure border, background shading, drop shadows, 3D effects, unused gridlines. Then examine the redundant chart-junk — legends where direct labels exist, labels where axes are clear, titles that duplicate axes. For each candidate, ask: if I delete this, does the viewer lose information they need? If the answer is no, delete it.
Step 2: Lighten. For the elements that survive Step 1, reduce their visual weight. Gridlines should be faint gray, not black. Axis spines should be thin, not thick. Tick marks should be short and thin. Annotations should be in a neutral color that does not compete with the data. Even the chart title, if it is purely descriptive rather than narrative, can be smaller and less prominent than the data itself. The goal is a visual hierarchy where the data is the most prominent element and everything else recedes into the background.
Step 3: Simplify. For the elements that remain, make them simpler. Fewer gridlines rather than more. Fewer tick marks rather than more. Fewer colors rather than more. Simpler fonts rather than stylized ones. A straight axis rather than a curved one. The fewest marks that do the job.
After these three passes, the chart will look dramatically different from the default — and dramatically better. The data-ink ratio will have increased, the visual noise will have decreased, and the viewer will have an easier time finding and interpreting the data.
The Maximal Deletion Test
One way to calibrate your sense of "how much to remove" is the maximal deletion test. For every element on the chart, ask: if I delete this element, does the chart become incorrect, uninterpretable, or ambiguous? If the answer is no, delete the element. Do this for every element in sequence. When you reach the point where deleting any more would make the chart incorrect or ambiguous, stop. You have reached the maximal deletion.
The maximal deletion is not always where you want to end up — sometimes an element is borderline and you choose to keep it for the extra comprehension it provides. But the maximal deletion gives you a lower bound on complexity, and most charts can be pushed remarkably close to the bound without loss.
Here is a rough example. Start with a default matplotlib bar chart. Apply the maximal deletion test:
- Figure border — delete. Chart is still correct.
- Top spine — delete. Chart is still correct.
- Right spine — delete. Chart is still correct.
- Vertical gridlines — delete. Chart is still correct.
- Horizontal gridlines — this is borderline. If you keep the y-axis numerical labels, the viewer can read values without gridlines. Delete. Chart is still correct.
- Y-axis tick marks — if the labels are present, the ticks are redundant. Shorten dramatically or delete.
- Y-axis numerical labels — now the only way the viewer can read quantitative values. Keep.
- Bars — data ink. Keep.
- X-axis category labels — necessary to identify categories. Keep.
- Title — arguable. For publication, usually keep. For an exploratory chart, sometimes delete.
The result is a chart with four bars, category labels underneath, a light y-axis with labels, and a title — and nothing else. This is far sparser than the default. It is also far easier to read.
The "Add Back Only What You Need" Rule
An alternative framing of the procedure is the opposite of the maximal deletion test: start with nothing and add only what you need. Draw the bars. Stop. Now ask: can the viewer read this chart? If they need to know the categories, add category labels. Now ask again: can the viewer read this chart? If they need quantitative values, add a y-axis. And so on.
This approach is harder to execute in a plotting library, because the defaults start with everything and you are always removing. But as a mental exercise, it is clarifying. If you imagine the chart as an empty rectangle and add only the marks you truly need, you will often find that the resulting chart has far less than the default and is far more legible.
An Example Walk-Through
Consider the ugly climate plot from Chapter 1 — the default matplotlib line chart of global temperature anomalies from 1880 to 2024. The default has many problems:
- A thick black border around the figure.
- Gridlines in both directions, drawn in black.
- A top spine and right spine enclosing the plotting area.
- Long black tick marks.
- A default sans-serif title that says "Untitled" or a plain description.
- A default legend box (if multiple series) sitting awkwardly on top of the data.
- A blue line that is thinner than the gridlines.
Apply Step 1 — Remove:
- Delete the figure border.
- Delete the top spine and right spine.
- Delete the vertical gridlines (they add nothing for a time-series line chart).
- Delete the default legend box (we will use direct labeling instead).
Apply Step 2 — Lighten:
- Lighten the remaining spines (bottom and left) to a medium gray.
- Lighten the horizontal gridlines to a pale gray.
- Shorten the tick marks and draw them thin.
- Replace the default title with an action title in a darker, larger font.
Apply Step 3 — Simplify:
- Reduce the number of y-axis gridlines (perhaps every 0.5 degrees instead of every 0.1).
- Round the year labels on the x-axis to major decades (1880, 1900, 1920, ..., 2020) instead of showing every year.
- Use a single strong color for the main line — no need for a palette of colors if there is only one series.
- Make the line thick enough to dominate the gridlines visually.
The result: a chart with a clean plotting area, a prominent line, subtle gridlines, a clear title, and no decorative noise. The data is the first thing the viewer sees. The structure recedes. The chart is the same data, the same axes, the same chart type — and it is dramatically more readable.
This is the progressive project milestone for Chapter 6: applying the declutter procedure to the climate plot. In Chapter 12, we will write the matplotlib code that implements each of these decluttering moves. For now, the principles are what matter.
6.5 When Minimalism Fails
The Data Desert Problem
The declutter procedure is powerful, but it is possible to take it too far. If you delete too aggressively, you end up with a chart that is technically correct but uninterpretable — a data desert where the viewer cannot orient themselves, cannot read quantitative values, and cannot make the comparisons the chart is supposed to support.
Examples of the data desert failure mode:
- Deleting the y-axis entirely and expecting the viewer to read relative magnitudes from bar lengths alone.
- Deleting all gridlines on a chart where the viewer needs to read quantitative values and there are no other reference marks.
- Deleting the title and the axis labels on a chart that will be viewed out of context (e.g., a chart shared on social media, where the surrounding article is not visible).
- Deleting the legend on a chart with many categorical series where direct labeling is not possible.
- Deleting the source attribution and data vintage information, which are non-data ink but are essential context for interpreting the data.
- Using such pale gridlines that they are invisible on low-quality monitors or in print.
The data desert problem reveals the crucial distinction between chart-junk (which should be deleted) and non-data ink that serves comprehension (which should be kept). Not every non-data element is chart-junk. Axis labels, source attribution, scale legends, and reference lines are non-data, but they are not junk — they are comprehension aids.
The Bateman Counter-Argument
In 2010, Scott Bateman and colleagues published a paper titled "Useful Junk? The Effects of Visual Embellishment on Comprehension and Memorability of Charts" in the Proceedings of CHI 2010. The paper presented experimental evidence that charts with certain kinds of decorative embellishment were more memorable than minimalist charts, at no cost to comprehension accuracy. Specifically, readers could recall the main finding of an embellished chart more reliably weeks later than they could recall the main finding of a plain version of the same chart.
The result was a direct challenge to strict Tufte minimalism. Bateman et al. did not claim that all embellishment is good — the embellishments they tested were thematic (a chart about coffee sales with coffee-cup icons integrated into the bars, not arbitrary decoration). But the result complicated the simple narrative that "more ink is always worse."
The correct reading of the Bateman result is not "ignore Tufte and decorate freely." It is: for certain audiences, in certain contexts, with thoughtful embellishment that matches the topic, the data-ink ratio heuristic is not the whole story. For a chart that will be seen once and needs to be remembered weeks later, a thematic visual element may improve recall. For a chart that will be read once and used to inform a decision immediately, minimalism is still the better bet.
The practitioner lesson: the declutter procedure is the right default. Embellishment is a tool you can reach for deliberately when memorability is more important than reading speed, and when you can execute the embellishment without sacrificing accuracy. But most charts, most of the time, are better off decluttered. Bateman is the exception that proves the rule, not the rule itself.
Knowing When to Stop
Here is a practical heuristic for avoiding the data desert: after you have completed the declutter procedure, look at the chart as a first-time viewer. Can you identify the chart type? The categories or variables being plotted? The units? The source of the data? The time period? The main finding? If any of these is unclear, you have deleted too much. Add back the minimum amount of ink needed to answer the unclear questions.
A chart should be the minimal version of itself, but no smaller. The declutter procedure pushes toward minimalism. The data desert test pulls back toward comprehensibility. The sweet spot is where every mark on the chart has a reason to be there — data, comprehension aid, or essential context — and nothing more.
Check Your Understanding — Imagine a chart with no title, no source attribution, no y-axis labels, and only a set of line series. Name at least three categories of viewer who would fail to interpret this chart. For each failure mode, name the specific non-data ink that would prevent it.
6.6 The Philosophy of Removal
Defaults Are Chart-Junk
The threshold concept of this chapter is that the default output of any plotting library is a starting point, not a finished product. Every default was chosen by someone — a library author, a style guide committee, a corporate branding team — and the defaults were optimized for "produces something reasonable for any input," not for "optimal communication of your specific data to your specific audience."
In practice, this means that the defaults are almost always too cluttered for your purposes. They include structural elements that protect against edge cases you do not have. They use tick densities optimized for datasets of average size, not your dataset. They include legend boxes that do not know whether you are using them. They apply gridline weights that work for light plots and obscure dark ones. The defaults are, by their nature, a compromise across use cases. Your use case is specific. The defaults are not.
The implication is that decluttering is not a cosmetic step to perform at the end of the chart-making process. It is a central design discipline that should be applied to every chart destined for publication. You cannot take the defaults seriously and also take the audience seriously. Choose one.
The Design of Subtraction
There is a mindset shift that happens when you start practicing decluttering seriously. You stop adding elements to charts and start removing them. You stop asking "what else could I show?" and start asking "what could I delete?" You become skeptical of every mark, every line, every color, every label. The word "delete" becomes the most common action in your chart-making vocabulary.
This is uncomfortable at first. Adding feels productive. Removing feels destructive. The plotting library makes adding easy (just call another function) and removing hard (you have to know the right parameters to set, the right elements to hide, the right arguments to override). The grain of the tool pushes against the discipline.
But after some practice, the discipline becomes the natural one. You look at a default chart and see the noise. You look at a decluttered chart and see the signal. You stop wanting to add things because you can see that adding things makes the chart worse. The mental habit becomes subtraction-first: see the chart, identify what can be removed, remove it, and only then consider whether anything needs to be added back.
This mental habit is the main deliverable of Chapter 6. The data-ink ratio is a formula. The declutter procedure is an algorithm. The five categories of chart-junk are a taxonomy. But the underlying transformation is a mindset: the belief that charts are improved by removal, not by addition.
Why the Mindset Matters for the Rest of the Book
The declutter mindset is foundational for everything that follows.
Chapter 7 builds on it by adding typography and annotation. But the typography and annotation are applied to a decluttered base — you do not add labels to a chart that still has a thick border and heavy gridlines, because the labels will compete with the structural noise.
Chapter 8 builds on it by introducing layout and small multiples. But small multiples only work if each individual panel is decluttered; otherwise, you are multiplying chart-junk across many panels rather than creating a clean comparison.
Chapter 9 builds on it by adding narrative structure. But narrative structure requires that the chart's main claim be visually prominent — which requires that the chart be decluttered enough for the claim to be the most salient feature.
Parts III through VII will teach you the matplotlib, seaborn, Plotly, and Altair code to execute the declutter moves. But the code is just the execution. The principle — remove everything that does not earn its place — is what you learned in this chapter, and it will guide every chart you make from this point forward.
Chapter Summary
This chapter introduced the central design principle of Part II: the data-ink ratio. Tufte's formula — data ink divided by total ink — is a heuristic that points you toward clean charts by making you examine every non-data mark and ask whether it earns its place. Most charts produced from software defaults have a low data-ink ratio because the defaults include structural, decorative, and redundant elements that add visual weight without adding information.
The five categories of chart-junk — decorative, structural, redundant, default, and dimensional — give you a taxonomy of what to look for. The declutter procedure — remove, lighten, simplify — gives you a systematic method for applying the principle. The maximal deletion test gives you a way to calibrate how aggressively to delete. And the data desert failure mode reminds you that non-data ink is not automatically chart-junk: axis labels, source attribution, and comprehension aids should survive even an aggressive declutter.
The threshold concept is that defaults are chart-junk. Every chart you produce for publication should be deliberately cleaned up rather than accepted as the library produced it. This mindset — subtraction first, addition only when necessary — is the foundation of everything that follows in Part II.
The progressive project milestone is the climate plot. The ugly default we have been carrying since Chapter 1 is ready for the declutter treatment. By the end of Chapter 12 (when we have the matplotlib code), the climate plot will be transformed from its default state into a clean, publication-ready figure — without changing the data, the chart type, or the underlying analysis. Just by removing what did not earn its place.
Next in Chapter 7: typography, annotation, and the words on your chart. Once the chart is clean, we add back the specific text elements that turn a correct chart into a self-explanatory one. The decluttering comes first, because you cannot add good typography to a noisy chart and expect the typography to survive. Clean first, then annotate.
Spaced Review: Concepts from Chapters 1-5
These questions reinforce ideas from earlier chapters. If any feel unfamiliar, revisit the relevant chapter before proceeding.
-
Chapter 1: The "visualization as argument" framework says every explanatory chart makes a claim and the design choices are the rhetoric. How does the data-ink ratio relate to that framework? Is decluttering a neutral act or a rhetorical one?
-
Chapter 2: Pre-attentive processing operates in the first 250 milliseconds of viewing. How does cluttered non-data ink interfere with pre-attentive processing? Why does it become harder for the viewer to spot the signal when there is more structural noise?
-
Chapter 3: The luminance-first principle says a chart should be interpretable in grayscale. How does this principle apply to gridlines and structural elements? Should gridlines have the same luminance as the data, or a different luminance?
-
Chapter 4: Chartjunk has an ethical dimension as well as an aesthetic one. How does clutter affect a viewer's ability to read the data accurately? Can a cluttered chart be misleading in the same sense that a truncated axis is misleading?
-
Chapter 5: The chart selection matrix tells you which chart type to use. Does the declutter procedure change which chart type is right, or only how the chosen chart type is rendered? Explain why the two steps are independent.
-
Chapter 5: The FT pandemic chart discussed in Chapter 5 used reference lines, direct labeling, and a restrained color palette. How do those design choices relate to the declutter procedure you learned in this chapter? Was the FT chart "decluttered" in the Tufte sense, or something different?