Skip to content

DS 103 · Module 2

Communicate Clearly: Storytelling, Annotation, and Decision Support

Turn evidence charts into bounded claims, guided annotation, a small dashboard, and a habit of reviewing charts for how they could mislead.

Start Section 1
0 / 5 completed
Sync my progressJoin a session to keep progress across devices and share it with your instructor

Info

After you join, your completed lesson numbers are sent to your instructor together with your learner code, so they can see your progress. Use the codes your instructor gave you, and do not enter your name, company secrets or other personal data. Progress is kept with the rest of that session's data.

Learning objectives

  • Write claims bounded by the data; separate observation, interpretation, and unknowns
  • Use title, subtitle, annotations, source notes, and sequence to guide reading without overstating
  • Design a small information hierarchy; avoid KPI overload; support drill-down questions
  • Identify truncated axes, dual-axis abuse, cherry-picking, aggregation masking, and AI chart errors
  • Deliver 3-5 visuals, evidence statements, limitations, and an action-oriented narrative

From charts to evidence statements

30 min

From Charts to Evidence Statements

Learning objective: write claims bounded by the data; separate observation, interpretation, and unknowns.

A chart does not speak for itself; the sentence written next to it does most of the persuading. The most common failure is a caption that claims more than the chart can support, quietly turning a correlation or a single period's snapshot into a causal or permanent conclusion.

Observation

  • A fact directly readable from the chart
  • "Entity E01's emissions intensity fell from 42 to 34 between 2023 and 2025."
  • Reproducible by anyone looking at the same chart

Interpretation

  • A reasoned view based on the observation, with its basis stated
  • "This may reflect the efficiency program launched in 2024, though other factors could contribute."
  • Must be labeled as interpretation, not fact
Overstated claim vs. bounded evidence statement
Overstated claimBounded evidence statement
"The efficiency program cut emissions.""Emissions intensity fell 19% after the program started; the chart alone cannot confirm the program caused the change."
"Site B is the worst performer.""Site B had the highest incident rate per 1,000 staff in the latest period; earlier periods are not shown here."
Compute the number before writing the sentence
before = df[(df["entity_id"] == "E01") & (df["period"] == "2023") & (df["metric"] == "emissions_intensity")]["value"].iloc[0]
after = df[(df["entity_id"] == "E01") & (df["period"] == "2025") & (df["metric"] == "emissions_intensity")]["value"].iloc[0]
change_pct = round((after - before) / before * 100, 1)
# The sentence must match this number exactly, and say nothing the chart cannot show

Warning

A correlation shown in a scatter plot, by itself, can never support a causal claim. If the audience needs a causal answer, say explicitly that the chart is descriptive evidence and that a causal claim would need a different kind of study.
Example: mistaking a correlation for a cause

An analyst found that classes using a new teaching tool scored 8 points higher on average and wrote "the new teaching tool raised test scores." But the classes that adopted the tool were also the ones with already-stronger results, taught by teachers who volunteered for it. The bounded evidence statement should instead read: "In this dataset, classes using the new tool scored higher; the data cannot rule out that already-stronger classes were more likely to volunteer for the tool."

  • Writing "caused" when the evidence only supports "correlated," with nothing else to support causation
  • Turning a single period's snapshot into a claim that this is how things always look
  • Leaving out what the chart cannot answer, so the reader assumes it covers every angle
Check yourself

A scatter plot shows that stores with longer opening hours have higher revenue. Which caption is most correct?

A scatter plot shows that stores with longer opening hours have higher revenue. Which caption is most correct?

Key takeaway: Write the sentence next to a chart as tightly as the chart itself: state the observation, label any interpretation, and never claim more than the evidence supports.

Annotation and story structure

35 min

Annotation and Data Story Structure

Learning objective: use title, subtitle, annotations, source notes, and sequence to guide reading without overstating.

Good annotation directs attention to the part of the chart that matters, without putting words in the data's mouth. A title that states the finding, a subtitle that adds context, a callout at the relevant point, and a source note that lets the reader check the claim all work together to guide reading responsibly.

Annotation elements and what each one does
ElementPurposeRisk if skipped or overdone
TitleStates the main finding or questionSkipped: reader must guess the point. Overdone: title claims more than the data shows
SubtitleAdds scope, time period, or unit contextSkipped: reader misreads the scope of the claim
Callout / annotationPoints to the specific moment or value that mattersOverdone: too many callouts compete for attention and nothing stands out
Source noteStates where the data came from and its definition, so it can be tracedSkipped: reader cannot judge how much to trust the chart
Annotate the point that matters, do not just add color
plt.plot(trend["period"], trend["value"])
plt.annotate("Efficiency program launched", xy=("2024", trend.loc[trend["period"] == "2024", "value"].iloc[0]),
             xytext=(10, 10), textcoords="offset points", arrowprops={"arrowstyle": "->"})
plt.title("Entity E01: emissions intensity fell 19% since the 2024 program")
plt.figtext(0.01, -0.05, "Source: DS103_Indicators_Clean.csv, synthetic teaching data", fontsize=8)

Info

A data story usually sequences several charts: set up the question, show the comparison or trend that answers it, then narrow to the detail that supports the recommended action. Each chart should earn its place in that sequence.

Warning

An annotation that says "this proves X" when the chart only shows a correlation is not guidance, it is overstatement. Annotate what happened, and be explicit when a stated cause is still an interpretation.
Example: a chart buried under five annotations

A trend chart originally had one key annotation marking when the program launched. Asked to "flag everything important," the team added five overlapping arrows and text boxes, and readers could no longer find the one moment that actually mattered. Pulling the annotations back to the one or two points that actually support the conclusion made the chart readable again.

Responsible annotation

  • Marks what actually happened at a point or value
  • Labels any causal claim explicitly as interpretation
  • Keeps only the one or two callouts that truly matter

Overstated annotation

  • States "this proves..." with only correlational evidence behind it
  • Blends the event marker and the conclusion with no distinction
  • Arrows every small wiggle, diluting the point that actually matters
Check yourself

What should a source note under a chart primarily let the reader do?

What should a source note under a chart primarily let the reader do?

Key takeaway: Titles, subtitles, callouts, and source notes should guide the reader to the real finding without ever claiming more than the chart shows.

Dashboard thinking

35 min

Dashboard Thinking: Overview → Detail

Learning objective: design a small information hierarchy; avoid KPI overload; support drill-down questions.

A dashboard with twenty KPIs on one screen usually communicates less than one with four, because the reader cannot tell which numbers matter. Good dashboard thinking picks a small overview, then gives the reader an explicit path to drill into detail when the overview raises a question.

Overview vs. detail layer
LayerPurposeTypical content
OverviewAnswer "is everything on track" in a few seconds3-5 headline KPIs, each tied to a clear target or comparison
DetailAnswer "why" once the overview raises a questionBreakdowns by entity, time, or category; the underlying comparison/trend/distribution charts
Select a small overview from many candidate metrics
candidate_metrics = df["metric"].unique()
# Overview: pick the few metrics the audience's primary question actually needs
overview_metrics = ["emissions_intensity", "water_intensity", "incident_rate", "energy_use"]
overview = df[(df["metric"].isin(overview_metrics)) & (df["period"] == df["period"].max())]

Info

A useful drill-down question is one the overview itself raises: "which entity is driving this total?" or "has this always looked this way?" Design the detail layer to answer exactly those questions, not every question that could theoretically be asked.

Warning

KPI overload does not just look cluttered, it actively hides the signal: when everything is highlighted, nothing is. If a metric does not change a decision, it does not belong on the overview.
Example: narrowing 22 KPIs down to 4

An operations dashboard originally included every metric the team could compute, 22 equally sized, equally colored tiles. Users reported they "couldn't tell what was wrong." After interviewing users about the three questions they actually asked most often, the team narrowed the overview to 4 KPIs with explicit targets and moved the other 18 metrics to a detail page organized by category; user satisfaction improved noticeably.

  • After seeing the overview, a user's first reaction is "what does this mean?" rather than "this tells me enough"
  • Not one KPI has an explicit target or comparison to judge it against
  • The detail layer's breakdowns do not match the questions the overview actually raises
Check yourself

A dashboard shows 18 KPIs in equally sized tiles with no visual hierarchy. What is the most correct critique?

A dashboard shows 18 KPIs in equally sized tiles with no visual hierarchy. What is the most correct critique?

Key takeaway: A small, prioritized overview plus a clear drill-down path communicates more than a wall of equally sized KPIs.

Misleading charts and AI review

35 min

Misleading Charts and Reviewing AI-Generated Visuals

Learning objective: identify truncated axes, dual-axis abuse, cherry-picking, aggregation masking, and AI chart errors.

Most misleading charts are not outright hallucinations; they use small, common technique choices that quietly favor one conclusion. Recognizing the pattern is the skill that transfers, whether the chart was made by a person or generated by an AI tool.

Common misleading patterns
PatternWhat it doesHow to catch it
Truncated axisA non-zero baseline exaggerates a small differenceCheck where the value axis starts
Dual-axis abuseTwo independently scaled y-axes are lined up to suggest two unrelated series move togetherAsk whether the two axis ranges were chosen to make the lines cross or align
Cherry-pickingA time window or subset is chosen because it supports the desired conclusionAsk what the chart would show with the full time range or population
Aggregation maskingAn average or total hides a subgroup difference or an outlierCheck the distribution or a breakdown behind any single summary number
Check for cherry-picking by widening the window
narrow = trend[trend["period"].isin(["2024", "2025"])]  # the window someone chose to show
full = trend  # the full available history
# Compare: does the narrow window's story survive when you look at the full range?

Warning

AI-generated charts fail the same way people's charts do, plus one more risk: the tool may silently filter, aggregate, or resample the data in a way that does not match the stated question. "The code ran" and "the chart is correct" are not the same claim.

Done

A reliable AI-chart review checks four things: does the filtering match the stated scope, does the aggregation match the claimed grain, does the axis/scale choice avoid the patterns above, and does the label or title match what the underlying data actually shows.
Example: a dual axis manufacturing a relationship that is not there

A chart plotted "marketing spend" and "website traffic" on two y-axes, and the lines appeared to move almost in lockstep, suggesting spend was driving traffic. Redrawing both axes starting at zero on the same scale showed the lines actually moved quite differently: traffic kept growing in months when marketing spend did not change, revealing a much weaker relationship than the original chart implied.

  • Every time AI hands back a finished chart, ask first: does the filtering match the scope I stated?
  • Confirm the aggregation (average, sum, median) matches the claimed grain
  • Check the axis baseline and scale, not just whether the chart "looks right"
Check yourself

An AI tool generates a chart with two y-axes for revenue and marketing spend, and the two lines appear to move together closely. What should you check first?

An AI tool generates a chart with two y-axes for revenue and marketing spend, and the two lines appear to move together closely. What should you check first?

Key takeaway: Truncated axes, dual-axis abuse, cherry-picked windows, and aggregation masking are the same risks whether a person or an AI tool made the chart - always check the filtering, aggregation, and scale before trusting it.

Independent Lab

40 min

Independent Lab: Evidence-Based Data Story

Learning objective: independently deliver 3-5 visuals, evidence statements, limitations, and an action-oriented narrative.

Info

Lab task: using the practice dataset, independently choose a real question, build 3-5 charts that answer it, write a bounded evidence statement for each, and state what action the evidence supports. No answer key is published; your reasoning is what gets reviewed.
  1. Choose a question and audience
    State the decision or question your data story addresses, and who will read it.
  2. Build 3-5 charts
    Use at least two different chart families (for example a comparison and a trend) from the practice dataset.
  3. Check scale integrity
    Confirm each chart's axis baseline, scale, and sort order are honest.
  4. Apply accessible encoding
    Make sure no chart relies on color alone, and every chart has a title stating its finding.
  5. Write one evidence statement per chart
    Separate observation from interpretation, and note anything still unknown.
  6. Sequence the story
    Order the charts so the narrative moves from the overview question to the supporting detail.
  7. State one limitation
    Write one sentence about what this data story cannot yet support.
  8. Log any AI assistance
    If AI helped draft a chart or the narrative, note what it helped with and what you verified yourself.
  • 3-5 charts covering at least two chart families
  • One evidence statement per chart, separating observation and interpretation
  • No chart relying on color alone; every chart has a stated-finding title
  • At least one limitation or unresolved question
  • A record of AI assistance (if used)
  • One stated next action the evidence supports

Warning

The bar for done is not "the charts render without an error"; it is that every claim is bounded by what its chart shows, the scales and encodings are honest, and the recommended action follows from the evidence rather than from the desired conclusion.

Done

If AI helps draft charts or narrative text, check every item yourself: the filtering and aggregation match your stated question, the scales and colors follow this module's principles, and every evidence statement stays inside what its chart supports. AI can speed up drafting; verification and the conclusion remain a human responsibility.
  • Every chart must be able to answer the brief's question on its own, not stay in the deck just because it "looks nice"
  • Sequence the story so the reader sees the overview-level finding before the supporting detail
  • State limitations specifically, for example the period the data covers or a missing denominator, rather than a vague "the data might be incomplete"

Key takeaway: An Evidence-Based Data Story is not a set of pretty charts; it is a sequence of honestly scaled visuals, each paired with a bounded claim, that together support a stated next action.

What next?