Scientific Figure Pro
Use this skill to create or revise publication figures with consistent aesthetics from the figures4papers project.
Workflow
- Identify the figure family (bar, trend, heatmap, scatter, multi-panel, conceptual illustration).
- Load helper APIs from
scripts/scientific_figure_pro.py. - Apply style first with
apply_publication_style(...). - Build the figure using
make_*helpers. - Export with
finalize_figure(...)to keep layout and output defaults consistent.
Use The Helper Module
Load by file path when package imports are inconvenient:
import importlib.util
from pathlib import Path
import matplotlib.pyplot as plt
module_path = Path("skills/scientific-figure-pro/scripts/scientific_figure_pro.py")
spec = importlib.util.spec_from_file_location("scientific_figure_pro", module_path)
mod = importlib.util.module_from_spec(spec)
spec.loader.exec_module(mod)
Core APIs
FigureStyle(...): Configure typography and axis linewidth.apply_publication_style(style=None): Apply global rcParams.create_subplots(nrows, ncols, figsize, **kwargs): Create flattened axes.make_grouped_bar(...): Build grouped bars with publication defaults.make_trend(...): Build trend lines with optional confidence shadow.make_heatmap(...): Build heatmaps with optional labels and annotations.make_scatter(...): Build clean scatter plots.make_sphere_illustration(...): Build conceptual shaded sphere panels.finalize_figure(fig, out_path, formats=None, dpi=300, pad=0.05): Save outputs consistently.
Style Policy
- Use Helvetica/Arial-like sans-serif families.
- Remove top/right spines.
- Keep legends frameless.
- Use semantic palette mapping:
- blue for target/proposed method,
- green for improvements,
- red for contrasts/baselines,
- neutral for support categories.
- Use
dpi=300by default anddpi=600for dense bar panels.
Practical Defaults
- Dense benchmark bars:
FigureStyle(font_size=24, axes_linewidth=3)and wide canvas. - Compact analysis charts:
FigureStyle(font_size=15 or 16, axes_linewidth=2). - Finalize every figure through
finalize_figure(...)instead of directplt.savefig(...).
Dependencies
- Python 3.8+
matplotlibnumpy
References
- Read
references/design_theory.mdwhen you need style rationale and reproduction rules.