Chart design rules
Rules for any chart the assistant designs or codes, covering one message, an action title, honest axes, direct labels, accessible colour and a source note. Load whenever a chart or plot is made.
When you design, specify, describe or write code for a chart, plot, map or dashboard tile:
Message
- Give each chart one message. Before choosing a chart, state the message in a sentence; if there are two messages, make two charts.
- Use an action title that states the message ("Returns doubled after the June carrier change"), not a label ("Returns by month"). Put what is measured, the unit and the period in the subtitle or axis title.
- Choose the chart for the comparison: a line for change over time, a sorted bar for comparing categories, a scatter for relationships, a histogram or box plot for distributions, and a stacked bar only when the parts of a whole are the point. Never use 3D, and use a pie or donut only for two to four parts of one whole.
Honest scales
- Start bar and column axes at zero. A line chart may zoom in on the range of the data, but say so on the axis when the zoom exaggerates a change.
- Avoid dual axes. If two measures with different units must be compared, use two aligned charts or index both to a common base and say so.
- Keep scales identical across small multiples and panels meant to be compared, unless the point is the shape and you say the scales differ.
- Use consistent time periods and intervals; mark gaps, partial periods and changes in definition on the chart.
- Show uncertainty when it affects the reading: intervals, ranges or sample sizes.
Labels and clutter
- Label series directly at the end of lines or on bars instead of using a legend whenever it fits.
- Label axes with units, use readable number formats (12.5k, 3.2M, 45%), and round to the precision the data supports.
- Sort categorical bars by value unless the categories have a natural order.
- Remove what does not carry information: heavy gridlines, borders, backgrounds, shadows, redundant labels and decimals.
- Annotate the point the message is about (an event, a threshold, a target line) with a short note on the chart.
Colour and accessibility
- Use grey for context and one strong colour for what matters; add more colours only when each one has a meaning.
- Use colour-blind-safe palettes, never rely on red versus green alone, and never make colour the only way to tell series apart: add labels, markers or line styles.
- Keep a colour's meaning the same across every chart in a report or dashboard.
- Make text legible at the size it will be viewed (for slides and screens, nothing smaller than about 10 to 12 points), with enough contrast against the background.
- Provide alt text or a one-sentence description of what the chart shows for anything published.
Provenance
- Add a source note with the data source, the date the data was extracted or the period covered, and any filters or exclusions that change the reading.
- State the base: n, the denominator of percentages, and whether figures are totals, averages or rates.
When writing chart code
- Set the figure size, font sizes and colours explicitly rather than relying on library defaults, and save to a file at a stated size and resolution (vector formats for print).
- Compute the data for the chart in code from the source, not by typing values into the plotting call.
- Never describe what a chart shows as if you had seen it unless you rendered it or the user showed it to you.
details
- kind
- Rule: standing instructions for everything the assistant does
- domain
- Data analysis
- category
- Data visualisation
- level
- Intermediate
- made for
- Data analyst, Data scientist, Business analyst, Product / UX / UI designer
- risk
- read-only
- version
- v1.0.0 · incubating
- reviewed
- 2026-10-03
- works in
- Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Antigravity, OpenCode, Windsurf, Zed, Continue, AGENTS.md, ChatGPT, claude.ai
use in
npx @hermes-hq/hodios install chart-design-rules --target claude-codenpx skills add hermes-hq/hodios-dist --skill chart-design-rules -a claude-codeRules are always-on instructions, so they are not in the plugins: add the skill, or paste the text into CLAUDE.md.
pairs well with
All of Data visualisationChoose a chart type
Recommends the chart that best carries a specific message for a given data shape, with encodings, the alternatives considered and the anti-patterns to avoid. Use before building a chart.
choose-chart-typeWrite plotting code
Writes publication-quality plotting code from data and intent, with labelled axes, accessible colours and an annotation on the key point. Use for matplotlib, seaborn, plotly, ggplot2 or Vega-Lite.
write-plotting-codeCritique a chart
Critiques a chart for clarity, honesty (axes, scales, cherry-picked ranges) and accessibility, and proposes a concrete redesign. Use before a chart goes into a deck, report or dashboard.
critique-chartChoose accessible chart colours
Chooses accessible categorical, sequential or diverging chart palettes with hex codes, colour-vision and contrast checks and highlight rules, fitted to brand colours. Use when colouring charts.
choose-chart-colorsSpreadsheet modelling rules
Rules for building or editing spreadsheets, covering separate inputs, calculations and outputs, no hard-coded numbers, consistent units, checks and a notes tab. Load for spreadsheet work.
spreadsheet-modeling-rulesAudit an existing dashboard
Audits a dashboard for decision usefulness, metric definitions, clutter, misleading visuals and staleness, ending in a ranked redesign shortlist. Use when a dashboard is ignored or distrusted.
audit-dashboard