Verify publication figures with a render-then-check QA pass — data-fidelity against every underlying row, axis/label floor-and-ceiling legibility, bounding-box collision detection for overlapping text/markers, and 300-dpi print-readiness. Use when proofing or auditing a finished figure for correctness and print quality, catching mislabeled or overlapping elements, or confirming a plot faithfully represents its data before submission. For CREATING the plot prefer alterlab-matplotlib (or alterl...
Installs into .claude/skills of the current project.
Are you the author of Alterlab Figure Qa?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/alterlab-ieu-alterlab-figure-qa)
---
name: alterlab-figure-qa
description: Verify publication figures with a render-then-check QA pass — data-fidelity against every underlying row, axis/label floor-and-ceiling legibility, bounding-box collision detection for overlapping text/markers, and 300-dpi print-readiness. Use when proofing or auditing a finished figure for correctness and print quality, catching mislabeled or overlapping elements, or confirming a plot faithfully represents its data before submission. For CREATING the plot prefer alterlab-matplotlib (or alterlab-seaborn / alterlab-plotly); for multi-panel publication layout prefer alterlab-scientific-viz; for schematic diagrams prefer alterlab-scientific-schematics. Part of the AlterLab Academic Skills suite.
license: MIT
allowed-tools: Read Write Edit Bash(python:*) Bash(uv:*)
compatibility: "Runs under `uv run python` with the plotting stack already used to make the figure (Matplotlib and, for image/text-box checks, Pillow). No GPU, no account. Operates on a rendered figure plus the source data — it re-renders and inspects, it does not need network access."
metadata:
skill-author: AlterLab
version: "1.0.1"
last_updated: "2026-09-23"
---
# Figure QA (render-then-verify)
## Overview
A finished figure can look fine and still be wrong: a series plotted from the wrong column,
a legend covering a data point, tick labels clipped at the axis edge, or a 150-dpi export that
pixelates in print. This skill is a **render-then-verify** QA pass — it re-renders the figure
and checks it against a concrete, measurable checklist before submission. It **complements**
the plotting skills (which *make* figures); it does not create plots.
## When to Use This Skill
Use this skill when the user wants to:
- **Proof a finished figure** for correctness and print-readiness before submission.
- Confirm the plot **faithfully represents its data** (every row/series accounted for).
- Catch **overlapping or clipped** labels, legends, and markers.
- Verify **resolution / export** settings (e.g. 300 dpi, vector where required).
### Does NOT Trigger
| Scenario | Use instead |
|----------|-------------|
| Create/plot the figure in the first place | `alterlab-matplotlib` / `alterlab-seaborn` / `alterlab-plotly` |
| Lay out a multi-panel publication figure | `alterlab-scientific-viz` |
| Draw a schematic / diagram | `alterlab-scientific-schematics` |
| Build an infographic | `alterlab-infographics` |
## Core Capabilities
### 1. Data-fidelity check
Verify the rendered marks against **every row** of the source data: series count, point count
per series, min/max/range on each axis, and that categorical labels match the data's
categories. Flag any series plotted from the wrong column or a silently dropped subset.
### 2. Label floor-and-ceiling legibility
Check that tick labels, axis titles, and annotations are within legibility bounds — a **font
floor** (nothing below the journal's minimum pt at final size) and a **ceiling** (titles not
so large they crowd the panel) — and that nothing is clipped at the axis boundary.
### 3. Bounding-box collision detection
Compute the bounding boxes of text, legend, and markers and detect **overlaps/collisions**
(legend over data, colliding labels, out-of-axes text). Report each collision with its
location so it can be nudged.
### 4. Resolution and export QA
Confirm the export meets the target: **≥300 dpi** for raster, vector format where the venue
requires it, correct figure dimensions/column width, and embedded fonts. Fail the check if the
raster resolution is below the floor.
### 5. Report
Emit a pass/fail checklist per criterion with the specific offending element(s), so the fix is
actionable. See `references/figure_qa_checklist.md` for the full rubric and Matplotlib bbox
recipes.
## Resources
- `references/figure_qa_checklist.md` — the full QA rubric, Matplotlib renderer/bbox recipes
for collision detection, dpi/vector export checks, and journal legibility floors. Loaded on
demand.
Part of the AlterLab Academic Skills suite.