Skip to main content
ClaudeWave
Skill450 repo starsupdated 16d ago

light-figure-drawing

从顶会大牛角度进行专业绘图与组图。当用户需要把规划好的图实际画出来时使用。按情况用 Python(matplotlib/seaborn/plotly/altair)、R(ggplot2)、MATLAB、Visio、Origin、LaTeX/TikZ、Illustrator、PowerPoint 等。审美统一、专业清晰、配色合理、字体规范、线条清楚、高分辨率,适合直接投稿。不仅画图,还从论文表达角度判断怎么排、怎么组、怎么标注、怎么突出重点。

Install in Claude Code
Copy
git clone --depth 1 https://github.com/Light0305/Light-skills /tmp/light-figure-drawing && cp -r /tmp/light-figure-drawing/skills/light-figure-drawing ~/.claude/skills/light-figure-drawing
Then start a new Claude Code session; the skill loads automatically.

SKILL.md

# 专业绘图与组图

## 工具选择(按图类型,附核心调用)
- 统计图/可复现图(首选):
  - **matplotlib**:最可控。组图 `plt.subplots(figsize=(7,5), constrained_layout=True)`,不规则布局用 `GridSpec`(跨格 `gs[0,:]`)。
  - **seaborn**:统计/分布/分类图。`sns.set_theme(style="ticks", context="paper", palette="colorblind")` + `sns.despine()`;分面拼图用 figure-level(`relplot/catplot` 的 `col=/row=`),手动拼图用 axes-level(`scatterplot(ax=...)`)。
  - **plotly**:交互/3D,静态投稿 `fig.write_image("f.pdf", scale=3)`(需 `kaleido`),`template="simple_white"`。
  - **altair**:声明式、可复现强。`chart.save("f.svg", scale_factor=3)`(需 `vl-convert-python`),拼图用 `c1 | c2` / `c1 & c2`。
  - **ggplot2(R)**:`+ theme_classic() + scale_color_viridis_d()`,拼图用 `patchwork`(`p1+p2` 且 `plot_annotation(tag_levels="a")` 自动标号)。
- 框架图/流程图/结构图:
  - **Graphviz**(自动布局):`digraph{rankdir=LR; node[shape=box,style=rounded]; A->B}`,选对引擎 `dot`(分层)/`neato`(无向)/`fdp`(大图),`rank=same` 对齐同层。
  - **TikZ/PGFPlots**(字体与正文统一):`\begin{axis}...\addplot table{data.dat};`,导言区 `\pgfplotsset{compat=1.18}` 统一样式,大图用 `external` 库缓存。
  - **Mermaid**(文档/初稿):`graph TD; A[框]-->|标签|B{判断}`,`mmdc -i in.mmd -o out.svg` 导出。
  - **Draw.io**(要可编辑矢量源 + 可版本控制的系统/架构图):`.drawio` 即 mxGraph XML,可程序化生成;有官方 jgraph/drawio-mcp(diagram-as-code,AI 可生成/改图),CLI `drawio --export --format pdf/svg` 出图。比 Graphviz 自动布局更可控、比 Mermaid 表达力强(与 m09 figure-planning 列的首选对齐;配置见 README 推荐 MCP 表)。
  - 精修拼版:Illustrator / Inkscape。
- 精细科学图/期刊曲线:
  - **Origin**:Export Graphs 按出版商精确设 Width/Height+DPI(TIFF 600dpi),可 `Export as AI` 转 Illustrator;.otp 模板固化风格。
  - **MATLAB**:`exportgraphics(ax,"f.pdf","ContentType","vector")` 出矢量、`"Resolution",600` 出位图;组图用 `tiledlayout` + `nexttile`(`TileSpacing="compact"`)。
- 示意/机制图/graphical abstract:生命科学图标库可用 **BioRender** 手工做(注意导出授权与分辨率;其官方 MCP 仅查询不能作图,故只手工用、非程序化路径)。
- 3D 结构/分子/科学可视化:**Blender**(开源,程序化建模渲染**非 AI 生图**;成熟路子用 Molecular Nodes/SciBlend 等插件,有社区/官方 MCP 但驱动科研可视化尚属探索);3D 渲染作论文图须数据真实可复现并标渲染参数,详见 m09 figure-planning references「Blender」节。
- 组图/排版:matplotlib subplots/GridSpec、Illustrator(图层+画板对齐)、python-pptx(`add_picture(..., width=Inches(3))`,layout[6] 空白页)。
优先可复现(代码)方案,便于改数据重出;最终精修/拼大图再进 Illustrator/Inkscape。具体决策同 a09。

## 一行套刊样式与导出脚本(本技能自带资产)
- **样式**:`plt.style.use("assets/publication.mplstyle")` 是通用底;按刊叠加 `plt.style.use(["assets/publication.mplstyle","assets/nature.mplstyle"])`(或 `science.mplstyle`)。三者均为 Okabe-Ito 色盲安全色环 + 无衬线 + 矢量文字可编辑(pdf/ps fonttype42、svg 不转曲)。
- **导出**:`scripts/figure_export.py`
  - `save_publication_figure(fig, basename, formats=("pdf","png","svg"), dpi=600)` 多格式 + DPI,自动建目录、强制文字可编辑。
  - `save_for_journal(fig, basename, journal, column)` 按刊规格设物理尺寸(mm→in)再导出,返回 `(paths, info)`。
  - `check_figure_size(fig, journal=, column=)` 校验栏宽(mm)与最小字号(pt),`measured=True,path=` 还能读回落盘文件实测宽度复核 bbox tight 静默裁剪。
  - `check_scaled_fonts(fig, journal=, column=)` 校验「大尺寸画再缩小到栏宽」后的**有效字号**——**仅对"先大画布作图再缩到栏宽"工作流有意义**;若已用 `save_for_journal` 设精确栏宽(scale≈1),它必报"无风险",是预期空操作不是 bug,standard 流程无需再跑。
  - `check_export_compliance(path, journal, column=)` 消费此前闲置的规格字段:实测 dpi≥min_dpi、文件体积≤max_file_mb、高度≤max_height_px、格式∈preferred_formats(位图读 Pillow,矢量/无 Pillow 跳过不臆断)。
  - `save_for_journal` 导出前检字体落空:rcParams 首选 Arial/Helvetica 在 Linux/CI 不可用会静默回退 DejaVu,回退即打 WARNING 并入 info["font"],让"字体与正文一致"可验证。
  - `JOURNAL_SPECS` 内置逐刊规格字典(含 `verified` 标记)。
- **配色**:`scripts/color_palettes.py`
  - `OKABE_ITO` / `OKABE_ITO_LIST` 8 色常量;`sequential_cmap()` / `diverging_cmap()` / `discrete_cmap()`;`apply_palette()` 设当前色环。
  - `to_grayscale()`、`simulate_cvd(kind=deuteranomaly/protanomaly/tritanomaly)`、`preview_palette()` 出原色/灰度/三种色盲对照图。有 `colorspacious` 走精确算法,缺则自动降级线性近似(`cvd_backend()` 可查)。
- **诚实性 lint**:`scripts/figure_integrity_lint.py` —— 静态扫绘图代码,提示常见误导:y 轴偷偷截断(含 `set_ylim(bottom=)` 关键字形式)、双 y 轴伪相关、bar/`sns.barplot` 无误差棒、误差棒未注明类型(`.std()` 数据计算不再被误当类型声明)、jet/rainbow 色图、3D 扭曲。`python scripts/figure_integrity_lint.py --file plot.py`(含 `--selftest`)。**对照反例教材** `examples/bad_figure_example.py`(故意违规、可端到端命中多条)。规范见 `references/figure_integrity.md`。只提示不阻断,最终判断交作者。**局限:仅覆盖 matplotlib/seaborn 静态正则,plotly/altair/ggplot2/MATLAB 链路的诚实性不被检查,那些需人工对照 figure_integrity.md。**
- **示例**(均可 `python examples/xxx.py` 跑通,Agg 存图):
  - `example_matplotlib_multipanel.py`:GridSpec 不规则布局 + (a)(b)(c) 标号 + 误差棒 + 显著性星标。
  - `example_seaborn_stats.py`:箱线/小提琴/条形统计对比 + despine。
  - `example_framework.dot` + `example_framework_render.py`:Graphviz 框架图,有 `dot` 二进制则渲染,否则降级 matplotlib 块图。

## 逐刊硬规格表(栏宽 mm + DPI + 格式 + 字号下限)
> **栏宽数字唯一真相源 = `scripts/figure_export.py` 的 `JOURNAL_SPECS`**;下表为其人读镜像,若与脚本不一致以脚本为准(改数字只改脚本)。verified=实测:已 curl 该刊作图规格页并记 HTTP 码;其余为依公开指南整理但本次未逐项实测(多因付费墙/反爬 403),投稿前请以目标刊"最新"作者须知为准。

| 期刊 | 单栏宽 | 双栏/整版宽 | 字号下限 | 线条 DPI | 半调/照片 DPI | 首选格式 | 实测 |
|---|---|---|---|---|---|---|---|
| **Nature** | 89 mm | 183 mm | 5 pt(面板标 8pt 粗体 a,b,c;正文 ≤7pt) | 600 | 300–600 | PDF/TIFF/EPS(文字勿转曲,Helvetica/Arial) | ✅ HTTP200 |
| **PLOS** | 83 mm | 140 mm(1.5栏) / 190 mm | 8 pt(8–12pt,Arial/Times/Symbol) | 600 | 300–600 | **仅 TIFF/EPS**;789–2250px@300dpi,<10MB | ✅ HTTP200 |
| **Science (AAAS)** | 55 mm (5.5cm) | 120 mm(12cm) / 整版 183 mm(18.3cm) | 5 pt(常 6–9pt) | 600 | 300 | EPS/PDF/AI/TIFF,无衬线 | ✅ 三档制经联网多源核实(2026-06-11) |
| **Cell Press** | 85 mm | 174 mm | 5 pt | 1000(线条) | 300 | PDF/AI/EPS/TIFF | ⚠️ 页 403 未实测 |
| **IEEE** | 88.9 mm(3.5in) | 181 mm(7.16in) | 8 pt | 600 | 300 | PDF/EPS/TIFF | ⚠️ 未逐项实测 |
| **Elsevier** | 90 mm | 140 mm(1.5栏) / 190 mm | 7 pt | 1000(线条) | 300(彩/灰)、组合 500 | PDF/EPS/TIFF | ⚠️ 页 404 未实测 |
| **MDPI** | 170 mm(单列正文宽,图按此宽或整数分数) | 170 mm | 8 pt | 1000(线/组合) | 300(照片) | TIFF/PNG/EPS | ⚠️ 付费墙未实测;含 db01 的 Animals/Agronomy/Sensors/Remote Sensing |

> **custom 逃生通道**:尚未进上表的刊(如中文刊)用 `save_for_journal(fig, base, journal="custom", custom_width_mm=86.0)` 直接传物理栏宽(mm),校验同理 `check_figure_size(fig, journal="custom", custom_width_mm=86.0)`。**栏宽数据须有来源(db01 卡或实测记录),禁止臆测**。中文刊实测栏宽已落 db01 risk_note(2026-06-11,pdfplumber 实测):农业工程学报 单栏 86 / 整页 180;中国农业科学、作物学报 单栏 81 / 整页 170;农业机械学报 待核查(PDF 入口被反爬拦截)。

数值与 `JOURNAL_SPECS` 同源,可在代码里直接读取(如 `figure_export.JOURNAL_SPECS["nature"]`)。

## 审美与规范(投稿级)
- **配色**:色盲友好——mat
light-backend-codingSkill

后端代码编写、逻辑强、安全性高、可读性好、版本控制、代码审查。当任务需要写实验代码、模型代码、数据处理代码、可视化代码、后端接口或系统逻辑时使用。要求逻辑清晰、安全、可读、可维护、便于复现/扩展/部署。支持 Git 版本管理、代码审查、注释规范、README、依赖管理、环境配置、运行说明与项目结构整理。

light-citationSkill

论文引用规划、审查与多格式生成。当用户需要处理参考文献、引用、bibtex 时使用。审查引用的关联度、真实性、权威性、时效性、数量、中外占比,是否引用了经典/最新/代表性/对比工作。避免虚假引用、过度引用、无关引用、堆砌、遗漏关键文献、低质量来源、引用与正文不匹配。生成 BibTeX/EndNote/GB-T 7714/APA/IEEE 等格式并按目标 venue 调整。

light-competitionSkill

竞赛与项目申报材料辅助。当用户做统计建模、数学建模、互联网+、挑战杯、大创、创新创业、科研训练等项目时使用。辅助写申报书、项目计划书、商业计划书、路演 PPT、答辩稿、项目摘要、技术路线、创新点、可行性分析、市场分析、研究基础、预期成果、经费预算、团队分工。用于非论文投稿场景,可与论文/软著/专利/PPT 联动。

light-consistencySkill

统一风格与一致性维护。在论文、PPT、图表、代码、项目文档之间保持术语一致、视觉风格一致、逻辑线索一致、创新点表述一致(常驻,所有任务后台生效)。避免同一项目在不同材料中出现说法不一致、指标名称不统一、图表风格混乱、创新点前后矛盾、方法名称变化、数据集名称不统一、论文与 PPT 逻辑不一致、软著与系统功能不一致。

light-data-engineeringSkill

数据处理、数据质量分析与数据集构建。当用户需要清洗数据、处理缺失/异常值、特征工程、数据增强、划分数据集、评估数据质量,或需自建数据集(采集、标注规范、格式、说明文档、隐私合规、发布)时使用。在提 idea 前优先判断现有数据是否足以支撑研究。

light-figure-planningSkill

根据论文内容规划应该做哪些图、哪些表、插在哪里、各起什么作用。当用户需要论文图表规划时使用。图表不限于统计图,也包括数据集真实效果图、模型输出示例、案例展示、可解释性可视化等。规划框架图、技术路线图、数据集示意图、模型结构图、算法流程图、结果对比/消融/敏感性图、真实效果图、统计表/对比表等,以审稿人标准判断哪些必做、哪些冗余。

light-file-readingSkill

强大地读文件并学习——Word、PDF、PPTX、Excel、CSV、图片、视频、代码、压缩包等。当用户提供任何文件、问"这个文件讲了什么"、或任务需要理解已有材料时使用(常驻,自动触发)。不只提取文字,而是理解结构、逻辑、图表、数据、实验结果、格式要求、章节关系、视觉风格、隐含要求与可复用内容,并转化为可执行任务。

light-frontend-designSkill

独特吸睛、审美好、有特色、美观全面的前端设计。当任务涉及前端界面、项目展示页、系统演示、大屏可视化、可视化平台、微信小程序 UI、移动端界面、设计系统、Tailwind v4、shadcn/ui、Next.js、React、Vite、可访问性、动效、重设计审计时使用。不只是能用,而是好看、统一、清晰、有亮点、有视觉记忆点,适合展示/答辩/演示/落地。按主题选风格:科技感、学术感、农业智慧化、数据可视化、极简、玻璃拟态、卡片式、大屏、管理系统、移动端、小程序等。