Journalistic data visualization
Generate and critique
the charts that carry
a data story.
vizier decides the parts of a chart that are actually decidable — which form fits the comparison, whether a palette survives colorblindness and contrast, whether the label ink is being confused for a series hue — and, with a corpus of critical writing, judges what a finished chart got wrong. Generation and critique, from one set of thresholds.
$ pip install datavizier $ vizier recommend-form "composition of a total over time" --n-series 5 → stacked-area (Part-to-whole · Change over time) $ vizier validate "#e69f00,#0072b2,#009e73" --pairs all → ALL CHECKS PASS (CVD ΔE, WCAG contrast, OKLCH lightness/chroma)
Two halves, one system
vizier started as a critic and grew a generator, and the two are colocated on purpose — they share the same DNA. The thresholds that let vizier suggest a form or palette are the thresholds it critiques against, so what it proposes is what it would pass. Held apart, they can be pointed at each other: a generator proposes, the critic pushes back.
Give me one that's right
Chart-form recommendation, colorblind-safe palettes and ordinal ramps, legible label ink — every suggestion validated before it's returned. A request that can't be satisfied honestly errors instead of returning something that fails.
Is this one right?
Structural and color checks straight from an SVG or HTML chart, plus retrieval-augmented judgment against a corpus of award commentary, structural critique, and practitioner walkthroughs — with prior-art citation.
What it decides
The computable half is deterministic, needs no LLM and no keys. What vizier suggests is what vizier would pass — the color math is a faithful port of a published validator (Machado-2009 CVD transforms, OKLCH lightness/chroma, WCAG contrast).
Chart-form recommendation
Describe the comparison and the data shape; get the form that matches, with the honest alternatives and the anti-patterns. Backed by 43 patterns across the nine FT Visual Vocabulary families.
Colorblind-safe color
Categorical palettes and one-hue ordinal ramps generated and validated: CVD separation under deuteranopia / protanopia / tritanopia, an OKLCH lightness band and chroma floor, and contrast against the surface. Legible label ink for any fill.
Structural checks from the artifact
Point vizier analyze at a chart's SVG or HTML and get
the palette pulled out and checked, plus structural issues — no
re-typing the colors, no guessing the encoding.
Corpus-backed critique
vizier critique <image> retrieves the relevant
pattern checklist and critical writing, then an LLM synthesizes a
structured review — the language of critique, grounded in prior art
rather than vibes.
MCP-native
vizier mcp serves every decision above — plus the
corpus query — as an MCP stdio server. Your Claude Code / Cursor
session, or a charting tool, asks vizier for the right call instead
of re-deriving it.
A core with no keys and no heavy deps
validate, suggest, recommend,
analyze, ink, and the pattern query all
work from pip install datavizier alone. Retrieval and LLM
critique are opt-in extras.
Install
$ pip install datavizier # computable toolkit + pattern query + MCP server $ pip install "datavizier[search]" # + semantic retrieval (find_similar) $ pip install "datavizier[critique]" # + LLM critique/eval (routes through somm) $ pip install "datavizier[ingest]" # + rebuild the corpus from source
Python 3.12+. The core has no proprietary and no heavyweight dependencies. Register the MCP server with one line:
$ claude mcp add vizier -- vizier mcp
Try the computable toolkit — no keys
$ vizier suggest-palette 6 # a CVD-safe categorical palette, validated $ vizier suggest-ramp 5 --hue navy # a one-hue ordinal ramp, validated $ vizier ink "#0072b2" # the legible text color for a fill $ vizier analyze chart.svg # palette + structural checks from an SVG
The chart-forms guide
43 patterns, nine families, live demos
A self-contained reader: for every chart form, when it earns its
place, when to reach for something else, the common mistakes, and a
reading checklist — each with a live d3 demo you can drive. Generated
from the same pattern data vizier answers recommend-form
with.
Critique & evaluation
The critique path (vizier critique) and the
vizier eval harness use an LLM, routed through
somm — a
self-hosted gateway on PyPI. Provide a key in .env, or swap
in any client by adapting one small module. The color-CVD case under
evals/ measures the lift the computable findings give a
critique: alignment rose from 2 to 5 on the focused A/B.
vizier & weaver
vizier is the decision + critique companion to weaver, which renders the graphics. weaver draws the pixels; vizier decides which form and which colors, and judges the result. The same thresholds serve both directions.
Status
v0.1.0 · MIT licensed. What the corpus draws on and the philosophy behind distilling broad expert taste into a determination are in INFLUENCES.md; the house posture on charts is in PRINCIPLES.md.