Reproducible matplotlib wrapper with mm-precision layouts
Project description
FigRecipe
Reproducible scientific figures as first-class objects
FigRecipe is a framework for creating reproducible, editable, and publication-ready scientific figures.
Instead of treating figures as static images, FigRecipe treats them as structured objects — with explicit data, layout, and style — that can be reproduced, edited, and shared.
Part of SciTeX™.
🤖 MCP Server — AI Agents Can Create Figures
FigRecipe includes an MCP (Model Context Protocol) server, enabling AI agents like Claude to create, compose, and reproduce publication-ready figures autonomously.
# Add to your Claude Code MCP config
figrecipe mcp install
Why FigRecipe?
Most scientific figures are created by code, but cannot be reproduced once the code is lost or modified.
FigRecipe solves this by separating:
- What is plotted (data & semantics)
- How it is styled (layout, colors, typography)
- How it is edited (GUI or code)
This makes figures: reproducible · inspectable · editable after publication
Quick Start
pip install figrecipe
import figrecipe as fr
import numpy as np
fig, ax = fr.subplots()
ax.plot(np.sin(np.linspace(0, 10, 100)), id="sine")
fr.save(fig, "figure.png") # → figure.png + figure.yaml
Reopen and edit later:
fig, ax = fr.load("figure.png")
fr.edit(fig) # Launch GUI editor
CLI:
figrecipe edit figure.png # Launch GUI editor
figrecipe reproduce fig.yaml # Recreate figure
figrecipe extract fig.yaml # Extract plotted data
What Makes FigRecipe Different?
🔹 Figures are first-class objects — Figures are not just images — they are structured, versionable artifacts.
🔹 Declarative, not imperative — You describe what the figure is, not just how to draw it.
🔹 GUI + Code coexist — The GUI is a frontend, not a black box. Everything is backed by a reproducible spec.
🔹 Millimeter-precise layout — Designed for journal figures, not dashboards.
🔹 MCP Server for AI agents — Let Claude and other AI agents create publication-ready figures autonomously.
Core Features
- Drop-in replacement for
matplotlib.pyplot - Fully reproducible figure recipes (
.yaml) - Publication-ready millimeter layout
- Interactive GUI editor
- Dark / light themes
- Works with existing matplotlib code
Save / Load Formats
fr.save(fig, "fig.png") # fig.png + fig.yaml
fr.save(fig, "bundle/") # directory bundle
fr.save(fig, "fig.zip") # zip bundle
fr.load("fig.png")
fr.load("bundle/")
fr.load("fig.zip")
| Format | Save | Load |
|---|---|---|
| PNG / PDF / SVG | ✓ | ✓ |
| YAML | ✓ | ✓ |
| Directory / ZIP | ✓ | ✓ |
Style Presets
fr.list_presets()
fr.load_style("SCITEX")
fr.load_style("SCITEX_DARK")
Millimeter-based Layout
fig, ax = fr.subplots(
axes_width_mm=60,
axes_height_mm=40,
margin_left_mm=15,
)
Figure Captions
fig.set_caption("Main figure description")
ax.set_caption("Panel A description")
Who Is This For?
FigRecipe is designed for researchers who:
- already use matplotlib or seaborn
- care about reproducibility and traceability
- want figures that survive revisions and collaboration
- are tired of re-writing plotting code
It is not meant to replace exploratory notebooks or quick plotting — it is meant to formalize results.
Style Granularity
FigRecipe provides millimeter-precise control over every visual element with the SCITEX style preset:
Includes statistical annotation brackets with significance stars (*, **, ***) for publication-ready comparisons.
Plot Gallery
FigRecipe supports 47 matplotlib plot types with publication-ready SCITEX styling:
Supported Plot Types
Line & Curve: plot, step, fill, fill_between, fill_betweenx, errorbar, stackplot, stairs
Scatter & Points: scatter
Bar & Categorical: bar, barh
Distribution: hist, hist2d, boxplot, violinplot, ecdf
2D Image & Matrix: imshow, matshow, pcolor, pcolormesh, hexbin, spy
Contour & Surface: contour, contourf, tricontour, tricontourf, tripcolor, triplot
Spectral & Signal: specgram, psd, csd, cohere, angle_spectrum, magnitude_spectrum, phase_spectrum, acorr, xcorr
Vector & Flow: quiver, barbs, streamplot
Special: pie, stem, eventplot, loglog, semilogx, semilogy, graph
Philosophy
A scientific figure is not an image. It is a structured representation of knowledge.
FigRecipe treats figures as first-class scientific objects.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file figrecipe-0.18.0.tar.gz.
File metadata
- Download URL: figrecipe-0.18.0.tar.gz
- Upload date:
- Size: 7.9 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a39fca7d3af5eb7195d2b2e9a1caded68725f05bc37b987d4da39875462f292a
|
|
| MD5 |
36f1aa53af8b51dfe5bdc08a53008a2e
|
|
| BLAKE2b-256 |
68d9348f5fd40bd226bfd414fab4f5334a53d411c21879afac9030943f107e6e
|
File details
Details for the file figrecipe-0.18.0-py3-none-any.whl.
File metadata
- Download URL: figrecipe-0.18.0-py3-none-any.whl
- Upload date:
- Size: 689.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
32eb538c806ff9f336833f003a340c38ee26297fa4e463a447457876f9ef251c
|
|
| MD5 |
a8fe00add339667cca4a85a3a4c0d88a
|
|
| BLAKE2b-256 |
4ac7235662f46a55ce28e9469d4b94e81c487e8a2c4ff8164366ec5d38b1b1a0
|