Dataslope logoDataslope

Telling a Story with Data

From exploration to communication — choose the right chart, cut the clutter, and guide the reader's eye.

Up to now most of your charts have been for an audience of one: you. Exploratory charts are fast, messy, and disposable — you draw twenty of them to find the interesting thing. But the moment you want to show that thing to someone else, the job changes completely. The chart stops being a tool for looking and becomes a tool for persuading.

This page is about that shift, from exploratory to explanatory. Exploratory charts answer "what is going on in this data?" and you draw them for yourself. Explanatory charts answer "here is the one thing you should take away," and you draw them for an audience that will give you a few seconds of attention. The data work is the same; the editing is different.

Choosing the right chart

Before any polish, the picture has to be the right kind of picture. Most chart choices follow directly from the question you are asking and the types of the variables involved. This table is your starting map — it covers the families this course teaches:

Your questionChart familySeaborn entry point
How do two numeric variables relate?scatter / linerelplot, scatterplot, lineplot
What does one distribution look like?histogram / KDE / ECDFdisplot, histplot, kdeplot, ecdfplot
How does a number compare across categories?bar / box / violincatplot, barplot, boxplot, violinplot
How many are in each category?count plotcountplot, catplot(kind="count")
How do all pairs of variables relate?pair plotpairplot
What is the correlation structure?heatmapheatmap

Read it as question → family. "Relationship between two numbers" almost always means a scatter (or a line, if the x-axis is ordered like time). "One distribution" means a histogram, KDE, or ECDF. "Compare a number across groups" means bar, box, or violin — depending on how much of the distribution you want to show. The point is to let the question pick the chart, not habit or whichever function you remember first.

The same mapping reads naturally as a decision flow — start from the question, and the chart family falls out:

The point is to let the question pick the chart, not the other way around.

Cut the clutter

Once the chart type is right, the most reliable way to improve an explanatory figure is to remove things, not add them. Every gridline, border, tick, color, and label competes for the reader's limited attention. Anything that is not carrying meaning is chartjunk, and it makes the signal harder to find.

A short decluttering checklist:

  1. Drop the frame. sns.despine() removes the top and right spines (especially with style="ticks" or "white").
  2. Limit colors. A figure with eight colors asks the reader to memorize a legend. Fewer, more deliberate colors read faster.
  3. Prefer direct, short labels. A unit-bearing axis label ("Body mass (g)") beats a cryptic column name; a direct label next to a line can beat a separate legend entirely.
  4. Do not over-decorate. Skip 3-D effects, heavy backgrounds, and gradients-for-decoration. They add ink, not information.
Code Block
Python 3.13.2

Guide the reader's eye

A cluttered chart treats every mark as equally important. An explanatory chart does not — it has one point to make, and it should steer attention straight to it. The most effective tool is contrast: make the one thing you care about stand out and let everything else recede.

The classic move is a single accent color against a gray background. Color one group; gray out the rest. The eye goes to the colored element immediately, and the grayed groups still provide context without competing:

Code Block
Python 3.13.2

A short text annotation can do the same job: one arrow or label on the single most important point says "look here" far more clearly than hoping the reader finds it. The principle is the same either way — spend contrast on the one thing that matters, and nothing else.

Be honest

A chart that misleads — even by accident — costs you the reader's trust the moment they notice. A few rules keep you honest:

  • Do not truncate axes to exaggerate. Starting a bar chart's y-axis at 90 instead of 0 can turn a 2% difference into a dramatic-looking cliff. For bars, which encode value by length, start at zero.
  • Show the distribution, not just a mean. Recall the bar-of-means warning: a single bar hides spread, skew, and outliers. When the shape matters, a box or violin (or the raw points) is more honest than one bar.
  • Label units. "Mass" could be grams or kilograms; "price" could be dollars or euros. Unlabeled numbers invite the wrong conclusion.

The most common dishonest chart

A truncated y-axis on a bar chart is the single most frequent way charts mislead, usually unintentionally. Because a bar says "compare these lengths", cutting off the bottom inflates small differences. Save axis truncation for position-based charts (like a line plot) where it is a legitimate zoom, and even then, say so.

Make it accessible

A chart that some of your audience literally cannot read is not doing its job. Two habits cover most of it:

  • Use colorblind-friendly palettes. Roughly 1 in 12 men has some form of color-vision deficiency, and the default red/green contrast is exactly the hard case. Seaborn ships a palette="colorblind" option designed to stay distinguishable. (Choosing palettes well — qualitative, sequential, diverging, and colorblind-safe — is the subject of the color palettes page.)
  • Never rely on color alone. If color is the only thing separating two groups, anyone who can't distinguish those colors loses the message. Reinforce it with a second channel — different marker shapes (style=), direct labels, or facets (col=) — so the distinction survives in grayscale too.
QuestionSelect one

Why is it risky to distinguish two groups using color alone (for example, one red line and one green line with no other difference)?

Seaborn cannot draw two colors on the same axes.

Readers with color-vision deficiency — or anyone viewing it in grayscale — may not be able to tell the groups apart.

Colored lines are always less accurate than black lines.

It forces the chart to use a sequential palette.

Make the title say the message

On an exploratory chart, a title like "Body mass vs. flipper length" is fine — it just names the axes for you. On an explanatory chart, that is a wasted line. The title is the most-read text on the figure, so spend it on the takeaway, not a restatement of the axes.

  • Axes-naming (exploratory): "Body mass vs. flipper length"
  • Message-stating (explanatory): "Heavier penguins have longer flippers"

The second title tells the reader what to conclude before they have decoded a single dot — and the chart then confirms it. A good test: if your title could sit on top of a completely different dataset's chart, it is naming axes, not stating a message.

QuestionSelect one

Which title is best suited to an explanatory chart meant to deliver a single takeaway to an audience?

"body_mass_g vs flipper_length_mm"

"Scatter plot of penguin measurements"

"Heavier penguins have longer flippers"

"Figure 3"

A worked example: one clean explanatory figure

Let's build a single explanatory figure end to end. The message: heavier penguins tend to have longer flippers. We pick the right chart (a scatter, since both variables are numeric), declutter (clean style, despine), keep it to a modest size, label the axes with units, and — most importantly — give it a message-style title.

Code Block
Python 3.13.2

Everything on that figure earns its place. There is no extra color (one relationship, one mark style), no boxed-in frame, units on both axes, and a title that hands the reader the conclusion. That is the difference between a chart you explored with and a chart you can show.

The explanatory checklist

Before you ship a chart: (1) does the chart type fit the question? (2) have you removed everything that isn't carrying meaning? (3) does one element stand out as the point? (4) is it honest — full axes, distribution shown, units labeled? (5) does the title state the message? Five quick questions turn an exploratory sketch into a communicative figure.

Your turn

Challenge
Python 3.13.2
Give a chart a message-style title

Build a clear scatter of the penguins dataset showing the relationship between flipper length and body mass, then title it with its message.

  1. With sns.scatterplot, put flipper_length_mm on the x-axis and body_mass_g on the y-axis. Capture the returned Axes in a variable named ax.
  2. Set the title to exactly Heavier penguins have longer flippers (a message-style title, not an axis restatement).

Check your understanding

QuestionSelect one

What best captures the difference between an exploratory and an explanatory chart?

Exploratory charts use Seaborn; explanatory charts use matplotlib.

Exploratory charts are for you to find what's interesting; explanatory charts are edited to deliver one takeaway to an audience.

Exploratory charts must be black and white; explanatory charts must be colorful.

Explanatory charts always contain more data than exploratory ones.

QuestionSelect one

On an explanatory chart, what is the most effective way to direct the reader's attention to the single most important group?

Give every group its own bright, distinct color.

Use one accent color (or a short annotation) for that group and gray out the rest.

Add gridlines and a heavy border to frame the chart.

Increase the figure size as much as possible.

QuestionSelect one

You compare average revenue across three regions with a bar chart and start the y-axis at 95 (the values are around 98 to 102) so the differences "look clearer." Why is this a problem?

Bar charts cannot have a numeric y-axis.

Seaborn refuses to draw bars unless the axis starts at zero.

A bar encodes value by length, so truncating the axis exaggerates small differences and misleads the reader.

Truncating the axis is fine for bars but not for line plots.

QuestionSelect one

Your figure distinguishes two product lines using a red line and a green line, with no other difference between them. What is the best single improvement for accessibility?

Make both lines thicker.

Switch the background to dark.

Add a second distinguishing channel — different line styles or direct labels — and use a colorblind-friendly palette.

Remove the legend so readers focus on the lines.

That completes the foundations: you can shape your data, pick the right chart, read what it reveals and hides, polish it, and edit it down to a clear message. From here it is practice — and the capstone is where you put the whole workflow together on a fresh dataset.

On this page