Skip to course content
Free data visualization course

Data Visualization and Dashboard Storytelling

Unit 12.02: Filters that change the whole story

Four readers can take four different headlines from one dashboard.

Every filter state is a different chart

Four filter combinations and the headline each produces.

The code lists them.

STATES = [
    ("all regions, last 12 months", "revenue up 8%",   "the intended story"),
    ("North only, last 12 months",  "revenue up 22%",  "true, and not the story"),
    ("all regions, last month",     "revenue down 3%", "true, and alarming"),
    ("one store, last week",        "revenue down 40%", "true, and meaningless"),
]
print(f"{'filter state':32} {'headline becomes':20} note")
for state, headline, note in STATES:
    print(f"{state:32} {headline:20} {note}")

print("""
Four readers, four different headlines, all from one dashboard. The last is
noise at that sample size and reads as a crisis.

Set a default that carries the intended story, make the current filter visible
in the title, and constrain ranges that are too small to be meaningful.
""")

All four are true. The last is noise at that sample size and reads as a crisis - one store, one week, down 40%, which for a small store is a quiet Tuesday.

Three fixes: a default that carries the intended story, the current filter visible in the title, and ranges constrained so a reader cannot select a period too small to mean anything.

The mistake this prevents

The mistake is offering every filter combination the data supports. Some combinations produce numbers that are technically correct and practically meaningless, and the reader has no way to tell which.

Takeaway

Constrain the filters that produce meaningless samples, show the current state in the title, and default to the view carrying the story.