Unit 01.02: Charts that decorate rather than inform
Most chart decoration is not merely wasted - some of it actively misleads.
Decoration, and the one feature worth banning
Six common features, sorted by whether they help the reader or cost them.
The code lists each with its effect.
FEATURES = [
("3-D bars", "harder to compare heights", "decoration"),
("gradient fills", "adds no information", "decoration"),
("a second y-axis", "invites a false correlation", "worse than decoration"),
("gridlines at the right density", "helps read values", "informative"),
("direct labels on the lines", "removes a lookup step", "informative"),
("a drop shadow", "adds no information", "decoration"),
]
print(f"{'feature':30} {'effect on the reader':30} verdict")
for feature, effect, verdict in FEATURES:
print(f"{feature:30} {effect:30} {verdict}")
decorative = sum(1 for *_, v in FEATURES if v != "informative")
print(f"\n{decorative} of {len(FEATURES)} add nothing or actively mislead")
# The second y-axis is the one worth banning outright. Two series on two scales
# can be made to cross wherever you choose, so the apparent relationship is a
# property of the axis limits rather than of the data.
Four of six add nothing. The second y-axis is the one worth banning outright: two series on two independent scales can be made to cross wherever you like, so any apparent relationship is a property of the axis limits rather than of the data.
Gridlines and direct labels earn their ink because they remove work from the reader - reading a value, and matching a line to a name.
The mistake this prevents
The mistake is judging a feature by whether it looks good. Judge it by what the reader can do afterwards that they could not before. A gradient fill fails that test; a direct label passes it.
Takeaway
Ink has to earn its place by removing work from the reader. Second y-axes manufacture relationships and should not be used at all.
