Storytelling with Visualisation
Don't just plot data — make it persuade. Build the visualizations a data scientist is paid for (loss curves, confusion matrices, distributions, regressions), then learn the craft of data storytelling: choosing the right chart, guiding the eye, annotating for meaning, and shaping a narrative leaders act on.
- Chapter 01
Matplotlib
5 lessons - 01 Why visualization matters Anscombe's quartet — four datasets with identical statistics and wildly different shapes. Plot first, model later.
- 02 Figure & Axes The matplotlib hierarchy you actually need to know. State-machine vs object-oriented APIs — and why every serious notebook uses the latter.
- 03 Line & scatter plots The two workhorses. Lines for sequences, scatters for relationships — plus markers, colors, and the bubble plot.
- 04 Subplots & GridSpec Multiple panels in one figure. The grid, shared axes, layout managers, and GridSpec for the weird cases.
- 05 ML-specific plots The five charts that go on every model card — confusion matrix, ROC, precision-recall, learning curve, feature importance. Copy-paste ready.
- Chapter 02
Seaborn
3 lessons - 06 Distributions Statistical defaults that just work. histplot, kdeplot, displot, boxplot, violinplot — and the palette discipline that keeps your plots colorblind-…
- 07 Categorical plots barplot, countplot, pointplot, swarmplot — what Seaborn computes for you, and which plot beats the others in each situation.
- 08 Heatmaps & pairplot Correlation matrices, pairwise scatter grids, and clustered heatmaps. The EDA plots that catch nonlinear relationships before you model.
- Chapter 03
Storytelling
4 lessons - 09 Choosing the right chart Start from the question you are trying to answer, not the chart type — a practical decision guide for comparison, trend, distribution, relationship…
- 10 The narrative arc of a chart Every chart should carry ONE clear message. Learn to write takeaway titles, structure setup-insight-implication sequences, and turn technically cor…
- 11 Annotation & guiding the eye How to direct a viewer's attention to the one thing that matters — direct labeling, focus coloring, pre-attentive attributes, and the data-ink ratio.
- 12 Colour & accessibility for clarity When should colour encode meaning vs just decorate — and how do I keep charts readable for colourblind viewers?
- End of section 0 / 12 complete
Make it stick — pass every quiz.
Each lesson has a short quiz at the bottom. Passing the quiz is what marks the lesson complete and counts toward your certificate.
Storytelling with Visualisation — frequently asked questions
Straight answers to the questions people ask most about storytelling with visualisation.
When should I use Matplotlib versus Seaborn?
Seaborn is built on Matplotlib and is faster for common statistical charts (distributions, categories, correlations) with attractive defaults. Drop to Matplotlib when you need fine-grained control over a custom figure. In practice you plot with Seaborn and tweak with Matplotlib.
What's the difference between a figure and axes in Matplotlib?
The figure is the whole canvas; axes are the individual plot areas inside it, each with its own x/y coordinates. One figure can hold many axes (subplots). Understanding this split is the key to building multi-panel charts cleanly.
Which chart should I use for my data?
Match the chart to the question: line for trends over time, bar for comparing categories, scatter for relationships between two numeric variables, histogram for one variable's distribution, and box or violin for comparing distributions across groups. Avoid pie charts beyond a few categories.
How do I make charts that work in both light and dark mode?
Avoid hard-coded colors; use a palette tied to your theme and keep sufficient contrast against either background. Test the figure on both backgrounds, and choose colors that stay distinguishable for color-blind readers.
Why does my plot look cramped or get cut off when saved?
Labels often overflow the default bounding box. Call `plt.tight_layout()` (or save with `bbox_inches='tight'`) to fit everything, and set an explicit figure size for the medium you're targeting.