A chart showing a filtered slice of the data owes readers the filter that produced it
Aliases: filter disclosure · scope transparency
What it is
A chart almost never shows "all the data"—it shows a filtered subset: a time range, a user segment, one platform, results after excluding certain records. Filtering is a legitimate and necessary analytical step, but when the filter conditions do not travel with the chart, readers cannot distinguish "criteria-based filtering" from "conclusion-serving filtering"—the numbers themselves may be perfectly real; the problem is that readers do not know which population the number comes from or what processing it underwent. Stating range and conditions is the structural exit from the selective-presentation problem: it makes all filtering transparent and lets readers judge the conclusion's scope of applicability themselves.
Why it happens
Undisclosed filtering harms through silent substitution of the population: every number on a chart is a statistic of "some filtered population," but readers usually interpret it as "the whole population"—"average order value: 200" without "App channel, completed orders only" gets read as the average across all channels and orders. Filter conditions also accumulate invisibly through interaction chains (an explorer sets five successive filters without noticing), until the final chart answers a far narrower question than the one originally asked. Disclosure's function is to turn "which population, what processing" from a reader's guess into explicit on-chart information, making the conclusion's boundaries discussable. The minimally sufficient disclosure has four elements: the time range, the spatial or population scope (which channels/regions/segments), the filter rules (what was excluded and included), and the sample size or coverage rate (how much data the conclusion rests on). None of this requires prose—a one-line footnote or an expandable info panel carries it all.
Where it stops holding
Disclosure depth scales with the chart's evidentiary stakes: internal exploratory charts can rely on the interactive status bar for conditions (readers see the filters they set themselves), while outward reports and screenshot-prone charts must fix range and conditions onto the chart face. Disclosure's cost is visual space; the remedy is layering—one summary line on the chart ("2024 Q1, App channel, n=48,210") with full conditions on hover or in an appendix. Another boundary is change tracking in dynamic charts: interactive dashboards change filters constantly, so "currently active filters" should be visible beside the chart (the same group's filter-context knowledge) and a snapshot should travel with any export or share. There is also a special kind of disclosure—"negative disclosure": when external limits prevent the data from covering its intended scope (a region's data missing), the absence itself must be stated; a silent blank and an annotated blank are two different degrees of honesty.
Applying it
- Build a range-and-conditions summary line into chart templates: time range, population/channel scope, key filters, sample size—mandatory fields.
- Show the currently active filter conditions beside interactive charts and carry them with exports; update the condition line live as filters change.
- Annotate incomplete coverage on the chart itself ("North-region data unavailable"); never leave silent blanks.
- Verification: ask a colleague who did not build the chart to answer from the graphic alone "who is this number about, over what period, excluding what?"; an incomplete answer means disclosure is insufficient.
Related
- Same group: U10.02.1 The chosen time window decides the trend's direction · U10.02.2 Removing unfavorable data points is falsification
- Nearby: U8.07.2 Data source and update time must accompany the chart · U7.06.5 The active time range must be visible alongside the chart
- Search terms:
filter disclosure·data scope·reporting transparency