[ ] Bar chart y-axis starts at zero (never truncated)
[ ] No 3D charts (distorts perception)
[ ] Color is doing real encoding work, not decoration
[ ] Colorblind-safe palette + redundant encoding (not color alone)
[ ] One clear question answered per chart
[ ] Annotation explains "why," not just "what"
[ ] Uncertainty shown (confidence intervals) where the data is genuinely uncertain
python
# Colorblind-safe palette (Okabe-Ito)
colorblind_safe = ['#E69F00', '#56B4E9', '#009E73', '#F0E442',
'#0072B2', '#D55E00', '#CC79A7', '#000000']
# Small multiples
sns.FacetGrid(df, col='region', col_wrap=3).map(sns.lineplot, 'month', 'revenue')
# Confidence interval band
sns.lineplot(data=df, x='month', y='revenue', errorbar=('ci', 95))
# Overplotting fix — transparency
plt.scatter(df['x'], df['y'], alpha=0.3)
# Remove non-data-encoding chart borders
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
[ ] Title states the conclusion, not just the topic
[ ] One chart = one point (not three insights crammed into one chart)
[ ] Key inflection points annotated with the "why"
[ ] Readable at a glance (3-second test) — not requiring explanation