Data visualization is a storytelling medium.
An individual viz might tell a surprising story (”Almost all of our new users are in Madagascar”). It might tell a scary story (”WoW churn is increasing rapidly”). Or it might tell a really boring story (”Conversion is flat for the 4th week straight”).
Beyond that, the simple act of framing the data viz process as a storytelling process can lead to better visualizations.
Why is it helpful to frame what could be a simple chart in this way? Because doing so mentally helps us focus on the takeaway of the viz by forcing ourselves to ask: What’s the story here?
Once we know what the story is, we can tailor the viz to communicate that story as clearly and as concisely as possible. We want the viewer to understand the story as quickly as possible, without having to do significant mental gymnastics to figure it out for themselves.
We’ll gloss over the procedure of sorting out the story itself. That’s the more general process of data analysis and is beyond the scope of this short blog post. Rather, we’ll focus on three tactics that can help a viz tell the story.
Axes provide the context for a viz. They tell the viewer what dimensions the story is set in.
Is this story set over the past 14 weeks? Or just the last few days?
Is the story taking place in the world of unit sales? Or on the planet of overall revenue?
Failure to provide this key information significantly reduces what I call time-to-interpret: The time and effort it takes a viewer to understand the story of a viz. If the axes aren’t labeled, the viewer has to use context clues to sort out what the axes are supposed to represent or, if that fails, has to ask what the axes are supposed to represent (It should never come to that!).
Not all elements of a viz are necessarily created equal. Some are more relevant to the core story of the viz than others (main characters vs. supporting characters, to continue the analogy). If there are indeed main characters, it should be clear who they are.
Let’s make up a basic example from finance: A plot of a stock’s share price and trading volume. We’ll call our stock $STOCK, naturally.
Here’s a basic plot of $STOCK share price and trading volume by day, using the default Google Sheets colors.
Before we start making changes to the viz, let’s start with the all-important question: What’s the story here?
Well, it looks like the value of $STOCK shot up dramatically on 5/6/2022. Let’s pretend that on date, $STOCK announced plans to acquire a startup in the space (and nothing else significant that would have moved the share price happened).
Great, that gives us our story: The price of $STOCK increased on the news that company is set to acquire a startup in the space.
Our two characters are share price and trading volume. Which of these two is the main character? Since our story revolves around an increase in share price (and trading volume didn’t change much), share price is our main character.
Since share price is our main character, we want to emphasize it to the viewer by choosing line colors that draw attention to the share price line.
This is typically done by using a bolder/brighter color for your main character element and using more subtle colors for your supporting characters (I often like to use grey).
We’ve used labeled axes to set the scene and strategically chosen colors to identify the main character. Now all we need to do is communicate the plot.
What’s a good way to communicate the plot? Literally spell it out.
This is where callouts come into play. A callout is a speech bubble or arrow connected to text that summarizes the significance of a key part of the viz. In our storytelling analogy, the callout is highlighting an important plot point in the story.
Let’s add a callout to our $STOCK viz from above:
Now when you look at this viz, it’s immediately clear what the story is.
I’ll note that while some visualizations have only one main plot point (and hence the need for only one callout), that’s not always the case. There can be multiple plot points in the story of a viz.
For example, if there were two different days on which the price of $STOCK spiked for an obvious reason, both of those points on the viz could be worthy of a callout.
A data visualization (at least one that will be presented to others) should tell a story, and that story should become obvious to the viewer as quickly as possible.
In order to minimize the amount of time it takes a viewer to correctly interpret the story of a viz, we can do several things: