scientific-figures
This skill should be used when generating publication-ready scientific figures — ROC curves, confusion matrix heatmaps, docking binding-energy heatmaps, pLDDT confidence histograms, SHAP summary beesw
SKILL.mdskills/scientific-figures/SKILL.md
GitHubOverview
用一个多子命令入口生成出版级科研图表,所有图共享同一套视觉规范(Arial 优先字体、 去除 top/right spines、关闭网格、色盲友好调色板、300/600 dpi 保存、tight bbox)。
统一的 figure_style.py 模块把原先散落在 15 个 figN_*.py 脚本里的样式逻辑
收敛为可复用组件,支持 nature / cell / science 三种期刊预设,并提供
ROC 显著性检验、自助法置信区间、SHAP 特征重要性排序等真实的统计能力。
When to Use This Skill
- 需要为论文或报告生成 ROC 曲线、混淆矩阵、热图等标准图表
- 需要多个子图风格完全一致(同一篇论文里不能一个图 Arial 一个图 Times)
- 需要为机器学习结果生成 SHAP 摘要图或特征重要性图
- 需要给分子对接结果做结合能热图
- 需要给结构预测结果画 pLDDT 置信度分布
Quick Start
export PYTHONPATH="$PWD/packages"
# ROC 曲线(含 AUC 显著性检验与自助法置信区间)
python skills/scientific-figures/scripts/make_figures.py roc \
--input data/roc.csv --output figures/fig8_roc \
--bootstrap-ci --fill-best --stats-output figures/fig8_roc_stats.csv
# 混淆矩阵热力图(多模型)
python skills/scientific-figures/scripts/make_figures.py confusion \
--input data/confusion.csv --output figures/fig9_cm
# 分子对接结合能热图
python skills/scientific-figures/scripts/make_figures.py heatmap \
--input data/docking.csv --output figures/fig11_docking \
--cmap coolwarm_r --colorbar-label "Binding Energy (kcal/mol)" \
--x-label Receptor --y-label Ligand --percentile-clip
# pLDDT 置信度直方图
python skills/scientific-figures/scripts/make_figures.py plddt \
--input data/plddt.csv --output figures/fig3_plddt
# SHAP 摘要蜂群图 + 特征重要性条形图
python skills/scientific-figures/scripts/make_figures.py shap \
--input data/shap.csv --output figures/fig10_shap --top-n 15 \
--importance-output figures/fig10_importance.csv
# 门-纲分类分布
python skills/scientific-figures/scripts/make_figures.py class-distribution \
--input data/taxa.csv --output figures/fig1_taxa --top-n 20
Workflow
- 加载样式:
apply_publication_style(style)设置 rcParams(字体、spines、网格、dpi、色板) - 读取数据:自动 BOM/分隔符嗅探,列名大小写不敏感匹配
- 按子命令分发:每个子命令是一个独立的绘图函数,共享统一的保存接口
- 统计增强(可选)
- ROC:AUC 梯形积分、AUC 间 Z 检验(Hanley-McNeil 标准误)、自助法置信区间
- 混淆矩阵:全局统一色阶 + 数值与百分比双标注
- SHAP:平均绝对 SHAP 值排序、标准差、Top N 选择
- 保存:
save_figure()同时输出 PNG(位图,用于预览与文档)与 PDF(矢量,用于投稿)
flowchart TD
A[CSV 输入] --> B[列名自动匹配]
B --> C{子命令}
C -->|roc| D[ROC 曲线 + AUC 统计]
C -->|confusion| E[混淆矩阵热图]
C -->|heatmap| F[矩阵热图 + 色条]
C -->|plddt| G[pLDDT 直方图]
C -->|shap| H[蜂群图 + 重要性条形图]
C -->|class-distribution| I[分类分布条形图]
D & E & F & G & H & I --> J[save_figure PNG+PDF]
Parameters
| 参数 | 说明 | 默认值 |
|---|---|---|
subcommand |
图表类型(位置参数):roc confusion heatmap plddt shap class-distribution secondary-structure model-performance feature-importance |
必填 |
--input |
输入 CSV | 必填 |
--output |
输出路径(不含扩展名时按 --formats 生成多个文件) |
必填 |
--style |
期刊预设:default / nature / cell / science |
nature |
--formats |
输出格式 | png pdf |
--dpi |
分辨率 | 300 |
--top-n |
显示 Top N(SHAP / 分类分布 / 特征重要性) | 15 |
--bins |
直方图分箱数(pLDDT) | 50 |
--cmap |
热图色阶 | coolwarm_r |
--colorbar-label / --x-label / --y-label |
热图标签 | Value / 空 |
--percentile-clip |
热图色阶按 2%/98% 分位裁剪 | 关闭 |
--fill-best |
ROC 图填充最佳模型曲线下方 | 关闭 |
--bootstrap-ci |
ROC 图计算 AUC 自助法置信区间 | 关闭 |
--stats-output |
ROC 显著性检验结果 CSV | 无 |
--importance-output |
SHAP 特征重要性表 CSV | 无 |
--row-labels |
热图首列是否作为行标签 | auto |
Outputs
| 文件 | 说明 |
|---|---|
<output>.png |
300/600 dpi 位图,适合预览、PPT、Word 嵌入 |
<output>.pdf |
矢量图,适合投稿(期刊要求矢量图时用这个) |
<output>_beeswarm.png/pdf |
SHAP 蜂群图(shap 子命令) |
<output>_importance.png/pdf |
特征重要性条形图(shap 子命令) |
<output>_stats.csv |
ROC 模型的 AUC 两两 Z 检验结果(--stats-output) |
<output>_importance.csv |
全部特征的 mean_abs_shap 排名(--importance-output) |
Validation
- ROC:图上的 AUC 标签应与
--stats-output中的 AUC 一致;随机基线必须标注AUC = 0.50 - ROC 统计:Z 检验的样本量
--n-samples默认 500,是 Hanley-McNeil 近似的假设值; 若实际样本量不同请显式传入,否则 p 值会有偏差 - 混淆矩阵:所有子图共享同一色阶(脚本已固定全局 vmin/vmax),因此不同模型的 格子颜色可以横向比较;若发现颜色深浅不一致说明数据被拆成了多行
- 热图:色阶裁剪(
--percentile-clip)后极端值会落在色阶边界,需在图注中说明 - pLDDT:三档配色(>90 绿 / 70–90 蓝 / <70 黄)与 AlphaFold 官方分档一致
- SHAP:蜂群图的纵轴顺序必须与重要性条形图一致(脚本共用同一
top_features列表) - 通用:生成后检查 PNG 的实际像素尺寸与文字是否被裁切(tight bbox 正常,但极端长的 X 轴标签仍需目视检查)
- 字体:Arial 缺失时 matplotlib 会回退到 Helvetica/DejaVu Sans, 最终投稿前请确认目标机器已安装 Arial,否则排版会有细微差异
References
references/methodology.md—— 样式规范、各图类型的统计方法与色板选择原理references/troubleshooting.md—— 常见报错、列名不匹配、字体与输出问题排查