From nature-skills
Submission-grade Nature/high-impact journal figure workflow for Python or R. Use whenever the user asks to create, revise, audit, or polish manuscript figures, multi-panel scientific plots, or journal-ready SVG/PDF/TIFF outputs, especially for Nature-family or other high-impact journals. Before plotting, define the figure's conclusion, evidence logic, export needs, and review risks. If the user has not chosen Python or R, ask "Python or R?" and stop. Use only the selected backend for figure generation, previewing, exporting, and QA. Supports matplotlib/seaborn and ggplot2/patchwork/ComplexHeatmap. Not for dashboards or Illustrator/Figma-first infographics.
npx claudepluginhub yuan1z0825/nature-skills --plugin nature-skillsThis skill uses the workspace's default tool permissions.
A guide for producing publication-quality scientific figures as a visual argument, not
README.mdassets/chart-atlas/atlas-01-bar-charts.pngassets/chart-atlas/atlas-02-line-trends.pngassets/chart-atlas/atlas-03-heatmaps.pngassets/chart-atlas/atlas-04-scatter-bubble.pngassets/chart-atlas/atlas-05-radar-polar.pngassets/chart-atlas/atlas-06-distributions.pngassets/chart-atlas/atlas-07-forest-interval.pngassets/chart-atlas/atlas-08-area-stacked.pngassets/chart-atlas/atlas-09-image-plates.pngassets/chart-atlas/atlas-10-network-matrix.pngassets/gallery/fig1-material-mechanism-rich.pngassets/gallery/fig2-spatial-imaging-rich.pngassets/gallery/fig3-in-vivo-efficacy-rich.pngassets/gallery/fig4-single-cell-systems-rich.pngassets/gallery/fig5-validation-perturbation-rich.pngevals/evals.jsonreferences/api.mdreferences/backend-selection.mdreferences/chart-types.mdGuides chart type selection by data structure, accessible color palettes like viridis and Okabe-Ito, figure composition, and journal formatting for scientific publications and talks.
Creates publication-ready scientific figures with matplotlib/seaborn/plotly, including multi-panel layouts, error bars, significance annotations, colorblind-safe palettes, and journal formatting for Nature, Science, Cell.
This skill should be used when the user asks to "create a figure", "make a scientific figure", "create a paper figure", "generate a figure element", "make an icon", "plot data for a figure", "compose figure panels", "create a graphical abstract", "make a multi-panel figure", "generate a PDF figure", "create a Nature-style figure", "make a publication figure", "create a figure for my grant", "make a poster figure", "create a schematic diagram", or mentions scientific figures, figure elements, figure composition, figure panels, icons for papers, matplotlib/seaborn/ggplot plots for figures, or react-pdf figures.
Share bugs, ideas, or general feedback.
A guide for producing publication-quality scientific figures as a visual argument, not as isolated pretty plots. Every figure starts from a claim, an evidence hierarchy, and a review-risk check before code or aesthetics.
The older Python/matplotlib rules in this skill remain valid. The skill now also supports
R, especially ggplot2 + patchwork + ComplexHeatmap + ggrepel + svglite/cairo_pdf + ragg.
If the user provides a private plotting template collection, use it only as an internal
adaptation source and do not reveal its path, filenames, or provenance in user-facing output.
Color policy: prefer unified method families across all panels over maximal hue separation.
For dense Nature Machine Intelligence-style figure pages, use the low-saturation NMI pastel
family described in references/api.md and reserve green/red mainly for gains, drops, and other directional cues.
Before generating or editing code, establish the contract below.
Backend selection is a blocking gate. If the user has not explicitly chosen Python or R in the current request or provided a clearly language-specific input file/workflow, ask one concise question: Python or R? Then stop and wait for the user's answer. Do not generate mock data, write scripts, create figures, or choose Python/R by default. This overrides general autonomy/default-execution behavior for figure tasks.
The selected backend is exclusive for all figure generation. Once Python or R is selected, every plotting script, preview image, SVG/PDF/TIFF/PNG export, QA render, and visual workaround must be produced by that same backend. Do not use Python to draw a preview for an R figure, and do not use R to draw a preview for a Python figure, even if the selected runtime or packages are missing locally. The non-selected language may only be used for non-visual file inspection or data conversion when it does not open a graphics device, import plotting libraries, create image/vector files, or change the final visual appearance.
Missing runtime/package rule. After the backend is selected, check the selected
runtime early (Rscript/R for R; Python and required plotting packages for Python).
If the selected runtime or required packages are unavailable, stop before rendering
and report the exact blocker. You may provide a selected-backend script and installation
commands, or ask permission to install dependencies, but you must not fall back to the
other language to make a substitute figure.
Only recommend a backend when the user explicitly asks you to choose or recommend one.
In that case, use references/backend-selection.md, state the reason, and then proceed
with the recommended backend.
quantitative grid, schematic-led composite,
image plate + quant, or asymmetric mixed-modality figure.The highest-priority rule is: the chart serves the scientific logic. Aesthetic polish, template matching, and complex layout are subordinate to making the core conclusion clear, defensible, and reviewable.
Do not disclose private local paths, private filenames, chat-attachment names, internal reference filenames, template identifiers, or the provenance of private working materials in user-facing replies, generated code comments, figure legends, reports, or manuscript text. Use generic descriptions such as "the provided R template collection", "a private working draft", or "the internal figure contract". Only reveal an exact path or source file when the user explicitly asks for that audit trail.
Python-only execution rule. When the user has selected Python, do all figure
drawing, previewing, exporting, and visual QA in Python. Do not call R/ggplot2,
ComplexHeatmap, patchwork, or any R graphics device to create a temporary preview,
fallback export, or layout approximation. If Python or required Python plotting
packages are missing, stop before rendering and report the missing dependency. You
may still write the Python script, provide pip/environment install commands, or
ask permission to install dependencies, but do not cross-render the figure in R.
import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.rcParams.update({
"font.family": "sans-serif",
"font.sans-serif": ["Arial", "Helvetica", "DejaVu Sans", "sans-serif"],
"svg.fonttype": "none", # editable text in SVG
"pdf.fonttype": 42, # editable TrueType text in PDF
"font.size": 7, # use 15-24 only for large slide-sized panels
"axes.spines.right": False,
"axes.spines.top": False,
"axes.linewidth": 0.8,
"legend.frameon": False,
})
def save_pub_py(fig, filename, dpi=600):
fig.savefig(f"{filename}.svg", bbox_inches="tight")
fig.savefig(f"{filename}.pdf", bbox_inches="tight")
fig.savefig(f"{filename}.tiff", dpi=dpi, bbox_inches="tight")
Use text.usetex = True only when LaTeX is installed and math-rich labels are required.
library(ggplot2)
library(patchwork)
theme_set(
theme_classic(base_size = 6.5, base_family = "Arial") +
theme(
axis.line = element_line(linewidth = 0.35, colour = "black"),
axis.ticks = element_line(linewidth = 0.35, colour = "black"),
legend.title = element_text(size = 6.2),
legend.text = element_text(size = 5.8),
strip.text = element_text(size = 6.2, face = "bold"),
plot.title = element_text(size = 7, face = "bold"),
panel.grid = element_blank()
)
)
save_pub_r <- function(plot, filename, width_mm = 183, height_mm = 120, dpi = 600) {
w <- width_mm / 25.4
h <- height_mm / 25.4
svglite::svglite(paste0(filename, ".svg"), width = w, height = h)
print(plot)
dev.off()
grDevices::cairo_pdf(paste0(filename, ".pdf"), width = w, height = h, family = "Arial")
print(plot)
dev.off()
ragg::agg_tiff(paste0(filename, ".tiff"), width = w, height = h, units = "in", res = dpi)
print(plot)
dev.off()
}
quantitative grid, schematic-led composite, image plate + quant, or asymmetric mixed-modality figure.n, error-bar definitions, source-data traceability, and image-integrity notes as part of the figure,
not as optional caption cleanup.Nature style rather than ML/NMI-specific style, read references/nature-2026-observations.md before choosing layout.| File | Open when |
|---|---|
| references/figure-contract.md | Need to convert a user request into core conclusion, evidence hierarchy, panel map, and review-risk checks |
| references/backend-selection.md | User has not chosen Python/R, asks for a recommendation, or a mixed Python/R workflow is possible |
| references/r-workflow.md | User chooses R or provides R scripts/templates/data |
| references/r-template-index.md | Need to adapt a user-provided or private R template collection without exposing source paths |
| references/qa-contract.md | Before final delivery, revision package, microscopy/blot figure, or journal-specific audit |
| references/design-theory.md | Typography, color theory, layout rationale, export policy |
| references/api.md | Python PALETTE, helper function signatures, validation rules |
| references/common-patterns.md | Python layout patterns: hero panels, legend-only axes, dark image plates, asymmetric layouts |
| references/nature-2026-observations.md | Real Nature page archetypes: schematic-led composites, dark image plates, clinical triptychs, asymmetric hero layouts |
| references/tutorials.md | End-to-end walkthroughs: bars, trends, heatmaps |
| references/chart-types.md | Radar, 3D sphere, fill_between, scatter patterns |