Pick your question, choose a dataset, get production-ready Python code. Every recipe is designed around what story your data tells — not just which chart looks nice.
Start with the question you're answering, not the chart type. The visualization follows the insight.
Every pixel should earn its place. Remove gridlines, borders, and colours that don't carry meaning.
Numbers without context are noise. Show benchmarks, thresholds, or comparisons that make the data meaningful.
If your audience needs exact values or your data has <5 items, a clean table often beats any chart.
When to use each chart — and when not to. Inspired by the Chartosaur principles.
Compare values across categories. The workhorse of data viz.
Show the shape of a single continuous variable's distribution.
Compare distributions across groups — shows median, IQR, and outliers.
Reveal relationships between two continuous variables.
Show trends over a continuous, ordered dimension (usually time).
Show patterns in matrices — correlation tables, cross-tabs, or time grids.
Show composition — how parts sum to a whole.
Like box plots but show the full distribution shape via kernel density.
Like bar charts but with less ink. Great for rankings.
Sometimes the most honest, readable format. Don't force a chart.