ResearchPlot 2.0¶
Know what your figure proves before you submit it¶
ResearchPlot is a local, source-backed venue-compliance compiler. Drop in an existing PDF, SVG, EPS, PNG, JPEG, or TIFF; pair it with an immutable venue profile; and get a report that separates verified requirements, known failures, recommendations, and evidence the software could not establish.
Evidence, not an acceptance guarantee
COMPLIANT means every applicable encoded required rule is covered and passes.
It does not validate scientific correctness, replace the official author guide, or
guarantee editorial acceptance. Every report carries its source URLs, caveats,
profile digest, and unresolved checks.
flowchart LR
A["Saved artifact"] --> O["File observer"]
L["Live Matplotlib figure"] --> O2["Live observer"]
P["Captions, descriptions, source data"] --> O3["Bundle observer"]
M["Compiled manuscript PDF"] --> O4["Manuscript observer"]
V["Locked source-backed profile"] --> C["Compliance plan"]
C --> O
C --> O2
C --> O3
C --> O4
O --> R["Coverage-aware verdict"]
O2 --> R
O3 --> R
O4 --> R
Audit a saved file¶
python -m pip install researchplot-venues
researchplot audit figures/figure1.pdf \
--profile nature@2026.08.0 \
--role main \
--width single \
--content line-art
The distribution is researchplot-venues; the Python package and command are both
researchplot. Base installation is offline at runtime and does not require LaTeX.
Start with an artifact Explore ResearchPlot 2.0
Three truthful verdicts¶
| Verdict | What ResearchPlot established |
|---|---|
COMPLIANT |
All applicable encoded required checks have sufficient evidence and pass. |
NON_COMPLIANT |
At least one applicable required rule is known to fail. |
INDETERMINATE |
No required failure is known, but required evidence or capability is missing. |
A file-only audit can be useful without being complete. For example, PDF resources may show whether fonts are embedded, but the PDF cannot reliably reconstruct every Matplotlib artist's original typeface and size. A project report preserves that gap instead of converting it into a green result.
One project, every deliverable¶
Schema-v3 projects connect a pinned profile to logical figures, concrete deliverables, captions, short and long descriptions, panels, source data, author attestations, and an optional compiled manuscript PDF.
import researchplot as rp
project = rp.Project.load("researchplot.toml")
report = project.plan(frozen=True).check()
print(report.verdict)
print(report.coverage)
print(report.sources)
print(report.remediations)
When creating a Matplotlib figure, the same project supplies an exact physical style and keeps the live evidence:
figure = project.figure("figure-1")
with figure.style(deliverable="main") as style:
fig, ax = style.subplots(aspect=0.62)
ax.plot(x, y, marker="o")
report = figure.check(fig=fig)
result = figure.export(fig, policy="violations")
Why ResearchPlot is different¶
Sources travel with every rule¶
Profiles are immutable, digest-addressed data. Each rule states its strength, applicability, supported evidence phases, verification mode, official source URL and locator, review status, and caveats. Missing official guidance is not invented.
The submitted file is inspected¶
ResearchPlot audits actual PDF/SVG/EPS/raster output, reports passive active content, and can run bounded inspection in a subprocess. It also creates deterministic visual accessibility previews and advisory diagnostics without generating prose or changing scientific data.
Automation remains reviewable¶
Terminal, JSON, SARIF, and self-contained HTML views derive from the same evidence.
Exit codes distinguish a venue failure (1), an operational/input failure (2), and
missing required evidence (3).
The workspace stays local¶
The optional browser workspace binds only to 127.0.0.1, uses a per-launch token, and
deletes temporary uploads after inspection. It never uploads artifacts or performs a
background profile update.
Choose a workflow¶
| Goal | Guide |
|---|---|
| Audit or create the first figure | Getting started |
| Understand coverage and verdicts | Compliance reports |
| Define a strict project | Project configuration |
| Inspect source evidence | Profiles and provenance |
| Review files in a browser | Local workspace |
| Build and verify a submission directory/archive | Bundles |
| Inspect a compiled manuscript PDF | Manuscript audit |
| Move from v1 | Migration |
| Review safety boundaries | Limitations and security |
Supported boundaries¶
Live styling and live-artist validation are Matplotlib-specific. Saved artifacts from Seaborn, SciencePlots, TUEPlots, PlotStyle, R, Julia, browser tools, or design software remain auditable. ResearchPlot does not edit scientific data, write alt text with AI, detect research misconduct, submit to a publisher, or parse LaTeX/DOCX manuscript source.