Paper-Plot-Skills: Generate Publication-Ready Figures with AI Instead of Matplotlib Tweaking
> GitHub: https://github.com/Trae1ounG/paper-plot-skills > Author: Trae1ounG (CUHK Shenzhen) > Focus: AI Skill toolbox for paper-figure reproduction and generation
---
1. The Pain Every Researcher Knows
You have a strong experiment result. Now you need a bar chart comparing your method against baselines.
You open matplotlib, write 50 lines, and get:
- Default blue, no visual differentiation
- System default sans-serif font, out of place in a paper
- Bars either too wide or too narrow
- No error bars, no significance markers, no legend
- PNG export with white margins, low dpi, blurry when zoomed
- Bar: main comparisons, ablation studies
- Line: training curves, parameter sweeps, scaling laws
- Scatter: t-SNE/UMAP visualizations, distribution comparisons
- Radar: multi-dimensional method comparisons (accuracy, speed, memory, generalization)
- Serif (Times New Roman style): traditional, formal, academic. Common in classic CV/ML venues (e.g., ICCV, early NeurIPS).
- Sans-serif (Arial / Helvetica): modern, clean, screen-friendly. Preferred by newer venues and systems tracks.
- LaTeX Computer Modern: best when figures and LaTeX body share typography.
- Print-friendly: many papers get printed in grayscale
- Colorblind-friendly: red-green colorblindness affects ~8% of males
- Differentiable: 3–5 series in one figure must be instantly distinguishable
- Subordinate: figures support data, not steal attention
- Most journals require 300 dpi (print quality)
- Some require 600 dpi (line art)
- Web display only needs 72–150 dpi
- User uploaded a paper screenshot (issue #1)
- AI detected a table layout with two-row results and a highlight background
- Generated:
plot-from-image/scripts/classwise_iou_table.py - The reproduction matches the original closely
- See a figure you like in someone else's paper → reproduce the style without manual tuning
- If a reviewer claims your figure looks too similar to a prior paper → show your reproducible script to demonstrate independent implementation
- Your advisor says "follow the top-conference style" → drop a screenshot into the AI
- Paired bars + gain arrows (MemEvolve style): not in any default template
- L-shape spine + axis-end arrows + right inset (SiameseNorm style): requires manual multi-parameter tuning
- Broken X-axis + multiple marker types (Meta-Harness style): matplotlib's broken axis is already advanced usage
- You name a style, AI reads the
.mdspec - You supply data, AI fills the template
- Output is standard matplotlib code, not a black box
- Identify visual elements (bars, colors, fonts)
- Map them to matplotlib parameters
- Emit a reproducible script
- Font type and size
- Spine style and tick direction
- Palette strategy
- Annotation (arrows, value labels, legend placement)
- Layout (single, multi-subplot, inset)
- Trae1ounG (2026). Paper-Plot-Skills. https://github.com/Trae1ounG/paper-plot-skills
- Source papers for preset styles: MemEvolve, SPICE, Self-Distillation, DAPO, SiameseNorm, MemGen, Meta-Harness, DoRA
After two hours of tuning and ten StackOverflow searches, the figure looks acceptable — but still a tier below the figures in neighboring groups.
The real issue is not the data; it is that paper figures are visual storytelling. Font, palette, spacing, annotations, and layout all shape reviewer first impressions.
Paper-Plot-Skills addresses this by packaging "top-conference figure aesthetics" as an AI Skill you invoke with one sentence.
---
2. Core Design: Style Parameters Distilled from 9 Real Papers
The project's central insight is that top-tier paper figures share a highly consistent style that can be systematically extracted.
Trae1ounG selected nine reference figures and performed two operations:
2.1 Style Decomposition: Each Figure Becomes a Parameter System
Example — bar chart from the MemEvolve paper:
| Dimension | Parameter | |---------|---------| | Font | serif (Times New Roman style), classic for papers | | Layout | Paired bars — baseline and method side by side | | Annotation | Gain arrow + percentage for intuitive improvement | | Y-axis | Independent scales per subplot, no forced alignment | | Palette | Low-saturation contrast, no flashy tones |
Example — training curve from the DAPO paper:
| Dimension | Parameter | |---------|---------| | Font | sans-serif, modern and clean | | Reference lines | Horizontal dashed lines marking thresholds | | Break lines | Vertical dashed lines marking training events | | Spine | Four-sided frame with outward ticks, professional look | | Legend | Placed outside, does not overlap curves |
These parameters are stored as .md files (bar_paired_delta.md, line_training_curve.md, etc.) paired with matplotlib script templates.
2.2 Two Usage Modes
Mode 1: plot-from-data — "Render my data in this style"
You say: "Use bar_grouped_hatch style for my data."
The AI:
1. Reads bar_grouped_hatch.md style spec
2. Reads your data (CSV / JSON / inline)
3. Fills the template and exports at dpi=300
Mode 2: plot-from-image — "Reproduce this figure"
You upload a paper screenshot. The AI: 1. Analyzes aspect ratio, font, palette, and layout 2. Infers matplotlib parameters 3. Emits a reproducible Python script
---
3. Nine Preset Styles Covering ~80% of Paper Scenarios
| Style name | Type | Source paper | Key traits |
|-------|------|---------|---------|
| bar_paired_delta | Bar chart | MemEvolve | Paired bars + gain arrow, serif font |
| bar_grouped_hatch | Bar chart | SPICE | Grouped bars + hatch on main method, value labels on top |
| line_confidence_band | Line plot | Self-Distillation | EMA smoothing + confidence band, LaTeX font |
| line_training_curve | Line plot | DAPO | Vertical breakpoints + horizontal refs, sans-serif |
| line_loss_with_inset | Line plot | SiameseNorm | L-shape spine + axis-end arrows + right-side zoom inset |
| scatter_tsne_cluster | Scatter | MemGen | t-SNE clusters + rounded color annotation boxes, dotted grid |
| scatter_broken_axis | Scatter | Meta-Harness | Broken X-axis dual panel, multiple marker types |
| radar_dual_series | Radar | DoRA | Octagonal dashed concentric grid, dual-method comparison |
Coverage:
---
4. Why These Style Parameters Matter
4.1 Font: Serif vs Sans-Serif Is Convention, Not Taste
Each Paper-Plot-Skills style inherits its source paper's font choice.
4.2 Spine Design: L-shape vs Four-sided Frame Reflects Information Density
| Spine | Use case | Implication | |-----------|---------|---------| | Four-sided | Line plots requiring precise reads | Rigorous, engineering-oriented | | L-shape (left + bottom) | Trend-emphasizing curves | Minimal, modern | | Frameless (axis only) | Minimalist visualization | High-end, designed | | Open frame | Grouped comparisons | Open, comparative |
line_loss_with_inset uses L-shape + axis-end arrows; bar_grouped_hatch uses an open frame — both intentional.
4.3 Palette: Differentiable, Print-Safe, Colorblind-Safe
Academic color schemes have implicit constraints:
The palettes are extracted from real papers, so they already meet these constraints.
4.4 dpi=300 Is Not Arbitrary
Default 300 dpi satisfies most venues without Photoshop upscaling.
---
5. plot-from-image: From Screenshot to Script
The flow:
1. Input: a paper screenshot (phone capture of a screen, or a PDF crop)
2. Analysis: AI identifies elements — bar count, line count, colors, fonts, layout
3. Inference: translate visual features into matplotlib parameters
4. Output: a .py script that reproduces the original
A real case — classwise_iou:
Why this matters:
---
6. Feynman Perspective
Q1: How is this different from a plain matplotlib template?
Templates like seaborn's paper context only set baseline values (font size, line width, color cycle). Real paper aesthetics go further:
The value proposition is encapsulating advanced matplotlib tricks as one-line Skills — packaging aesthetic judgment, not just preset parameters.
Q2: What role does AI play?
In plot-from-data: parameter injection + template rendering.
In plot-from-image: visual analysis + parameter inference.
In both modes, AI is an assistant, not a replacement. You still need to understand your data, choose the style, and judge whether the output fits.
Q3: Where is the ceiling?
1. Style coverage: 9 styles cover ~80% of cases; specialized charts (manifold visualization, network graphs, heatmaps) remain uncovered. 2. Domain scope: styles come from ML/AI papers; biomedical, physics, and chemistry follow different conventions (e.g., error-bar conventions in bio, log-log axes in physics). 3. Interactivity: modern publishing accepts interactive HTML figures; the toolkit currently outputs static matplotlib only. 4. Non-matplotlib ecosystem: some domains rely on ggplot2 (R), Plotly, or TikZ. The toolkit is currently matplotlib-only.
Q4: The Most Valuable Takeaway Is the Methodology
The richest part of this project is not the nine scripts but Trae1ounG's framework for figure decomposition:
This methodology transfers to any visualization tool. Even without using Paper-Plot-Skills, you will see your own figures with a more professional eye.
---
7. Recommended Usage by Scenario
| Scenario | Recommended mode + style | Why |
|------|---------|---------|
| Have experimental data, need a comparison chart | plot-from-data + bar_paired_delta | Most common; immediate visual payoff |
| Saw a paper figure you love | plot-from-image | Upload screenshot, automated analysis |
| t-SNE visualization for a paper | plot-from-data + scatter_tsne_cluster | Professional cluster annotations, no manual tuning |
| Ablation study, 5 methods | plot-from-data + bar_grouped_hatch | Grouped bars + hatch fill, clear distinction |
| Training curve needing convergence display | plot-from-data + line_confidence_band | EMA smoothing + confidence band, polished look |
| Multi-dimensional method comparison (e.g., A/B test) | plot-from-data + radar_dual_series | Radar with 8 dimensions at a glance |
---
8. One-Sentence Summary
> Paper-Plot-Skills' core insight: paper-figure quality is driven by aesthetic parameters, not by data alone. Nine styles distilled from real top-conference papers turn matplotlib's "tuning hell" into "one-prompt output." plot-from-image further compresses the "see a good figure → reproduce its style" loop from hours to minutes. For researchers, time belongs to experiments, not to color tweaking.
---
References