Publication-ready matplotlib figures for academic papers, slides, and reports — bars, trends, scatter, heatmaps, multi-panel layouts — with a house minimalist style and print/vector export conventions. Use when the user is finalizing or creating such figures in matplotlib. Do not use for interactive dashboards (Plotly/Altair/Bookeh), exploratory-only plots, dominant 3D/GIS, or Illustrator/Figma-first infographic workflows.
Installs into .claude/skills of the current project.
Are you the author of Scientific Figure Making?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/raktim-mondol-scientific-figure-making)
---
name: scientific-figure-making
description: Publication-ready matplotlib figures for academic papers, slides, and reports — bars, trends, scatter, heatmaps, multi-panel layouts — with a house minimalist style and print/vector export conventions. Use when the user is finalizing or creating such figures in matplotlib. Do not use for interactive dashboards (Plotly/Altair/Bookeh), exploratory-only plots, dominant 3D/GIS, or Illustrator/Figma-first infographic workflows.
license: Adapted from ChenLiu-1996/figures4papers (public repository; cite relevant papers when reusing figure patterns)
metadata:
version: "1.0"
skill-author: ResearchCraft
source: https://github.com/ChenLiu-1996/figures4papers
---
# Scientific Figure Making
Create publication-quality matplotlib figures following a consistent, minimalist house style proven across papers at Nature Machine Intelligence, ICML, NeurIPS, ECCV, etc.
Open `references/` only as needed; do not preload every file. Start from the table below, then follow links inside the document you opened instead of loading the full reference set up front.
## When to load this skill
- Matplotlib figures for **papers, slides, or reports** that must match a publication look (fonts, palette, spines, legends, export).
- Requests involving **grouped bars, trend lines, heatmaps, multi-panel grids**, or **PDF/SVG/high-DPI** output in a scientific-figure context.
## When not to load
- **Plotly, Altair, Bokeh**, or other interactive / web-first plotting.
- **EDA-only** plots where seaborn or pandas is enough until there is a publication target.
- Primary workflow is **3D, GIS**, or **non-matplotlib** tooling.
- **Illustrator / Figma-first** layout or infographic (not matplotlib data plots).
## Quick start
```python
import matplotlib
matplotlib.use("Agg") # headless
import matplotlib.pyplot as plt
import numpy as np
# Apply publication style
rc = {
"font.family": ["Arial", "Helvetica", "DejaVu Sans", "sans-serif"],
"font.size": 16,
"axes.spines.right": False,
"axes.spines.top": False,
"axes.linewidth": 2.5,
"legend.frameon": False,
"svg.fonttype": "none",
}
plt.rcParams.update(rc)
# Semantic palette
PALETTE = {
"blue_main": "#0F4D92", "blue_secondary": "#3775BA",
"green_1": "#DDF3DE", "green_2": "#AADCA9", "green_3": "#8BCF8B",
"red_1": "#F6CFCB", "red_2": "#E9A6A1", "red_strong": "#B64342",
"neutral": "#CFCECE", "highlight": "#FFD700",
"teal": "#42949E", "violet": "#9A4D8E",
}
fig, ax = plt.subplots(figsize=(3.5, 2.5)) # single-column width
x = np.linspace(0, 10, 100)
ax.plot(x, np.sin(x), color=PALETTE["blue_main"], label="sin")
ax.plot(x, np.cos(x), color=PALETTE["red_strong"], label="cos")
ax.set_xlabel("Time (s)")
ax.set_ylabel("Amplitude (mV)")
ax.legend(frameon=False)
fig.tight_layout(pad=2)
fig.savefig("figure.pdf", dpi=300)
fig.savefig("figure.png", dpi=300)
```
## Core principles
1. **Minimalist spines** — top/right off, frameless legend.
2. **Semantic color** — blue = proposed/key, green = improvement, red = baseline/contrast, neutral = reference.
3. **Typography** — Helvetica/Arial-like sans, larger sizing for bars (font.size 24, linewidth 3).
4. **Export** — PDF/SVG vector preferred; PNG at dpi=300 (600 for dense panels).
5. **Layout** — `tight_layout(pad=2)` default; ultra-wide `(45, 12)` for multi-metric comparisons.
## Related files
| File | Open when |
| --- | --- |
| `references/tutorials.md` | End-to-end walkthroughs (bar, trends, heatmap) |
| `references/api.md` | Function signatures, `PALETTE`, validation rules |
| `references/common-patterns.md` | Layout patterns, legend panel, print-safe bars |
| `references/design-theory.md` | Typography, export policy, palette rationale |
## Attribution
This skill adapts conventions from [ChenLiu-1996/figures4papers](https://github.com/ChenLiu-1996/figures4papers) (4.7k stars, public repository). If the generated figures draw heavily from specific `figure_*` scripts, cite the associated papers listed in the README.