Unit 03.01: Labels that carry units, scope and date
A value label needs three things, and most have one.
What, in what unit, over what scope and period
Five candidate labels, sorted by whether a reader could check the number against anything they already know.
The code lists them.
LABELS = [
("Revenue", False, "revenue of what? in what currency? when?"),
("Revenue (GBP thousands)", False, "still no scope or period"),
("Revenue (GBP thousands), UK retail stores, Jan-Jun 2026",
True, "unit, scope and period all present"),
("Q2", False, "which year? which quarter definition?"),
("Q2 2026 (Apr-Jun)", True, "unambiguous"),
]
print(f"{'axis or title label':56} sufficient?")
for label, ok, note in LABELS:
print(f"{label:56} {'yes' if ok else 'NO':4} {note}")
print("""
Three things every value label needs: what is measured, in what unit, over
what scope and period. A reader who has to ask any of those cannot check your
chart against anything they already know.
""")
"Revenue" fails on all three counts. "Revenue (GBP thousands)" fixes the unit and leaves the reader unable to tell whether this is one store or the group, this quarter or last year.
"Q2" is the quiet one: without a year and a definition it is ambiguous in organisations whose financial year does not start in January, which is most of them.
The mistake this prevents
The mistake is assuming the surrounding document supplies the scope. Charts get screenshotted, pasted into decks and forwarded without their page - so every chart has to carry its own scope and period.
Takeaway
Every value label needs the measure, the unit, and the scope and period. Charts travel without their surrounding document, so they must be self-describing.
