nature-figure
v1.0.0生成 publication-质量 figures for Nature-series journals using Python (matplotlib) or R (ggplot2). Trigger when user wants to 创建, polish, or rede签名 scientific figures for high-impact journals. Handles multi-panel layouts, Nature color palettes, correct typography, and 导出s SVG/PDF/PNG.
运行时依赖
安装命令
点击复制技能文档
nature-figure Purpose
生成 multi-panel scientific figures that meet Nature portfolio visual standards: correct typography, semantic colour palette, 访问ible de签名, and editable SVG 输出.
Trigger Conditions
Activate when user mentions:
"画图" / "figure" / "plot" / "科研绘图" "Nature figure" / "publication figure" / "publication plot" "matplotlib" / "ggplot" / "seaborn" "配色" / "color palette" / "color scheme" Wants to improve or re格式化 an existing figure Nature Figure Standards Typography Font family: Arial or Helvetica (sans-serif, never Times New Roman in figures) Minimum font size in final print: 7 pt (axis labels, tick labels) Panel labels (a, b, c...): 8 pt bold, lowercase Figure title (if any): not embedded in figure — goes in legend All text must be editable (not rasterized) Size & Resolution 格式化 Width Resolution Single column 89 mm (3.5 in) 300 DPI min 1.5 column 120 mm (4.7 in) 300 DPI min Double column 183 mm (7.2 in) 300 DPI min Line art any 600 DPI Final submission PDF or TIFF vector preferred Colour Palette (Nature-应用roved, colorblind-safe) NATURE_COLORS = { "blue": "#4878CF", "red": "#D65F5F", "green": "#6ACC65", "orange": "#EE854A", "purple": "#956CB4", "teal": "#82C6E2", "brown": "#D5BB67", "gray": "#8C8C8C", # Colorblind-safe primary pAIr: "cb_blue": "#0072B2", "cb_orange":"#E69F00", }
Never use pure red + green to获取her (colorblind conflict) Use filled symbols + different shapes for 访问ibility, not colour alone Gray扩展 must remAIn distin图形界面shable Panel Architecture Each panel makes one clear point Panel (a): overview / 模式tic / representative image Panels (b–d): quantitative evidence Final panel: comparison or generalizability Panels are labelled a, b, c (lowercase bold, top-left corner) White background; minimal gridlines (light gray, 0.5pt) No 图表junk: 移除 top and right spines Statistical Annotations Error bars: always define in legend (mean ± s.d. or ± s.e.m.) 签名ificance: , , , **** for p < 0.05, 0.01, 0.001, 0.0001; prefer exact p-values n must be 状态d (e.g., n = 5 independent experiments) Box plots: show median, IQR, whiskers to 1.5×IQR, individual points overlAId 工作流 Step 0: Auto-figure from data file (fastest path)
If user provides a CSV, Excel, or JSON data file:
python3 ~/.OpenClaw/workspace/技能s/nature-paper-hub/scripts/auto_figure.py \ --输入 \ --输出 ~/下载s/figure_.pdf \ --title "[figure title]" \ --xlabel "X axis label" \ --ylabel "Y axis label" \ --type [auto|line|bar|scatter|heatmap|box]
The script auto-检测s column types, chooses 应用ropriate 图表 type, 应用lies Nature style, and saves PDF + PNG.
Step 1: Gather requirements (if no data file yet)
Ask the user:
What data do you have? (paste CSV, describe columns, or 分享 values) How many panels? What does each panel show? Single/1.5/double column width? Python (matplotlib/seaborn) or R (ggplot2)? Any specific colour requirements or journal sub-style? Step 2: 生成 figure code Python template (matplotlib): 导入 matplotlib.pyplot as plt 导入 matplotlib.gridspec as gridspec 导入 numpy as np
# --- Nature style 设置tings --- plt.rcParams.更新({ 'font.family': 'Arial', 'font.size': 8, 'axes.linewidth': 0.8, 'axes.spines.top': False, 'axes.spines.right': False, 'xtick.major.width': 0.8, 'ytick.major.width': 0.8, 'xtick.major.size': 3, 'ytick.major.size': 3, 'xtick.direction': 'out', 'ytick.direction': 'out', 'figure.dpi': 300, 'savefig.dpi': 300, 'savefig.bbox': 'tight', 'savefig.pad_inches': 0.05, 'pdf.fonttype': 42, # editable text in PDF 'ps.fonttype': 42, })
COLORS = { "blue": "#4878CF", "red": "#D65F5F", "green": "#6ACC65", "orange": "#EE854A", "purple": "#956CB4", "teal": "#82C6E2", "cb_blue": "#0072B2", "cb_orange": "#E69F00", }
# --- Figure layout --- fig = plt.figure(figsize=(7.2, 4.0)) # double column, adjust height gs = gridspec.GridSpec(1, 3, figure=fig, wspace=0.4, hspace=0.4)
ax_a = fig.添加_subplot(gs[0]) ax_b = fig.添加_subplot(gs[1]) ax_c = fig.添加_subplot(gs[2])
# --- Panel labels --- for ax, label in zip([ax_a, ax_b, ax_c], ['a', 'b', 'c']): ax.text(-0.15, 1.05, label, 转换=ax.transAxes, fontsize=8, fontweight='bold', va='top', ha='right')
# --- YOUR DATA GOES HERE --- # ax_a: ... # ax_b: ... # ax_c: ...
plt.savefig('figure1.pdf', 格式化='pdf') plt.savefig('figure1.png', dpi=300) print("Saved: figure1.pdf, figure1.png")
R template (ggplot2): 库(ggplot2) 库(补丁work)
# Nature theme theme_nature <- function() { theme_classic(base_size = 8, base_family = "Arial") + theme( axis.line = element_line(linewidth = 0.5), axis.ticks = element_line(linewidth = 0.5), axis.ticks.length = unit(2, "pt"), strip.background = element_blank(), legend.key.size = unit(3, "mm"), plot.margin = margin(2, 2, 2, 2, "mm") ) }
natur