---
name: cell-data-figure
description: >-
  科研数据绘图、顶刊数据图复现与研究数据替换。先按研究问题和数据结构选择可比参考图，
  必须用数据编写并实际运行参考复现代码，核验视觉一致性后才能替换用户数据。
  最终只交付最终版绘图代码、绘图前数据和 TIF/JPG/PDF 图件。
  当用户要求以参考论文图为复现对象、复刻其数据图风格并在门槛通过后替换研究数据时使用；
  一般 Python/MATLAB 绘图代码生成、重构或代码规范审核使用 cell-visualization-code。
  不用于机制示意图、图形摘要、照片编辑或图片描摹矢量化。
metadata:
  compatibility: >-
    需要可读图、读写本地文件、执行 Python 的宿主；无参考时还需联网检索。
    本地检查脚本使用 Python >=3.10、Pillow、NumPy、PyMuPDF；绘图默认 Matplotlib。
  version: "1.2.0"
  language: "zh-CN"
---

# 科研数据绘图：先复现参考，再替换数据

## 不可跳过的执行顺序

**问题与数据检查 → 选择并锁定参考 → 获取参考数值 → 编码复现 → 看图核验 → 门槛通过 → 替换研究数据 → 重跑与三格式核查 → 仅发布最终产物。**

本 Skill 是由当前宿主模型执行的工作流，不是自主联网的独立软件。
由当前模型检索、理解论文、读图、设计和修改代码；文件比对、导出和格式检查在本地执行。
不要求额外模型、外部绘图 API、API key 或人工逐阶段审批。
不要把单模型分阶段自查称为多个独立专家验证。

## 硬规则

1. **必须先复现参考图。** 没有实际参考图、没有运行复现代码、没有实际查看生成图，均不得声称复现通过。
2. **数据生成图形。** 点、曲线、柱、区间、热图和统计标注来自可核查数值及代码。禁止整图贴图、图像生成模型代画数据图、用像素描摹代替数据绘图。
3. **复现门槛不允许跳过。** 必须实际执行本包的 `compare → gate → check-gate`。无法运行必要工具时如实说明阻断，不用“类似风格”替代通过。
4. **先通过门槛，再替换用户数据。** 参考复现的生成代码继续作为正式绘图实现的基础；保留经过核验的布局和样式，不另起炉灶重画。
5. **只留最终代码。** 最终仅 `plot.py`，不附参考脚本、旧版本、废弃分支、测试代码。不要删除用户原有文件。
6. **只交付三类：代码、绘图前数据、最终图。** 每张图必须输出 `.tif`、`.jpg`、`.pdf`；不得额外输出 PNG、SVG、报告、README、清单、日志或过程压缩包。
7. **真实数据优先，科学事实优先。** 不根据预期结论筛选数据、伪造显著性、复制参考论文的效应量，或为了相似而改变观测值。
8. **任何未通过项不得标为 PASS。** 视觉判断需要宿主实际读图；相似度指标、哈希、文件扩展名都不是视觉一致或科学正确的证明。
9. **不得修改验收脚本来强行放行。** 明确的工具缺陷可修复并测试，但不得删掉规则、改写 review 掩盖问题或绕过 publish。
10. **不暗中更换参考。** 用户指定参考未通过时报告实际差异；自动选择的参考不合适时可以记录原因后重新选择，但必须从锁定参考开始完整重做。

## 输入、默认值与交付边界

从当前消息、附件和已提供上下文提取：研究问题、数据文件、研究设计、参考图/论文/图号、目标期刊、输出位置。已提供的信息不重复询问。
仅缺非关键外观参数时自行合理设定，记录在代码注释；不要把偏好询问变成长问卷。
缺统计设计、独立样本单位等关键信息时不擅自推断显著性；能做的描述性图继续做，不能核实的推断不做。

默认 Python + Matplotlib，CSV 绘图输入，白底，600 dpi，JPG quality=95/subsampling=0。
600 dpi 是本 Skill 默认值，不声称是所有期刊的统一要求；用户或已核实的期刊要求优先。
尺寸由参考与最终用途确定，不强制 16:9、不强制通用蓝白配色。

最终单图通常只有：

```text
final/
├── plot.py
├── plot_data.csv
├── figure.tif
├── figure.jpg
└── figure.pdf
```

复杂数据允许最少必要的 `plot_data_*.csv/.tsv/.parquet/.npz/.npy/.h5/.h5ad/.mtx`。
只包含绘图需要的内容；不要用二进制文件夹带日志、说明或参考缓存。默认不交 Excel、原始下载包或依赖文件。
多图共用一个 `plot.py`，每图使用唯一文件名并各有三格式；整版多面板图按一张图交付。

**Skill 包的脚本、参考规范和组件是运行工具，不是每次绘图任务的交付物；严禁复制整个 Skill 包进 final/。**

## 本地工作区与状态

在已授权项目内建立本任务专用、不会覆盖已有文件的临时工作区。不要使用用户其他项目的固定缓存路径。
参考图、参考数据、复现代码、比较图、review JSON、门槛记录、测试导出均放工作区；最终候选放工作区的 `staging/`。
正式 `final/` 在全部检查通过前不得创建或对外宣称完成。

状态只有：`REFERENCE_LOCKED → REFERENCE_RENDERED → REFERENCE_PASSED → USER_RENDERED → FINAL_VERIFIED → DELIVERED`。
进入 `USER_RENDERED` 前执行 `check-gate`。参考图、参考数据、复现代码、复现图或审核证据任一变化，原门槛失效，重新核验。
门槛仅在工作期间使用；最终 `plot.py` 不读取门槛 JSON，也不依赖临时文件。

成功发布后，`final/` 仍只含约定产物；任务内部 `_work/` 保留不可替代的最小审计包：来源定位与哈希、数据变换说明、真实运行命令及依赖版本、当前 gate/review 和必要比较证据。可删除能从这些记录稳定重建的预览、缓存、废弃代码和冗余副本；不得删除用户原件、付费任务结果、任务 ID 或唯一核验依据。
只能清理明确属于本任务的可重建临时内容，不能递归清理用户目录、安装的 Skill 或输入文件。内部审计包不是最终交付，除非用户明确索取。
失败时不要发布假 final/；简短说明真实阻断，内部诊断不作为交付物。

## 第1步：确定图要回答的问题

把问题写成一句可检验的表达，不把用户希望的结果当成已经证实的结论。
读取实际数据，检查字段、单位、分组、独立样本量、缺失、异常、配对、重复测量和层级关系。
先辨别比较、趋势、相关、分布或空间问题，再选图型；不能先选好看参考再强迫数据适配。

读取 [数据与统计规则](references/data-contract.md)。
已完成的转换不重复执行；不凭列名猜测单位或把细胞/技术重复数当独立样本数。

## 第2步：选择、阅读并锁定参考

用户给参考时实际打开该图；只有论文标识时获取对应论文的实际图，不凭标题或记忆复现。
没有参考时，使用宿主真实可用的文献检索/网页/文件工具，筛选同领域或相近研究中数据类型、比较关系、研究目的相近的原始论文。
优先初筛约 3–5 张候选后确定一张，不强行凑满候选数，更不机械全文阅读 20 篇。
顶刊标准以领域和任务为准；不要默认所有专业必须模仿同一本期刊，也不编造影响因子。

必须阅读实际图、图注、相关结果及必要方法；有图片的 PDF 必须查看对应页的渲染图，不能只读文本提取结果。
若宿主提供 PDF 截图工具，按其规则截图；本地 PDF 可渲染再查看。
内部记录论文、期刊、年份、DOI/可访问定位信息、图号/面板、访问日期及是否存在勘误。
截图无可核实论文来源时记为“用户提供的参考图，论文信息未核实”，不得编造出处。

锁定具体画布或面板边界，保存实际参考副本及哈希。不能在核验时偷偷裁掉难复现的图例、统计标记或面板。
多面板各自统计语义分别核实；不能只复现其中最简单的面板后称整图通过。

## 第3步：获取数值，实际编写并运行参考复现代码

参考数据优先顺序：作者 Source Data/补充表/仓库 → 可核实的文内报告数值 → 图片数字化近似数值。
核对数据与图号、筛选、转换、标准化、排序、聚类、统计量、误差条和软件参数的对应关系。
公开文件能下载不代表已能复现；模型不能看见但随意“补齐”的数值不属于数据获取。

数字化时记录坐标标定、线性/对数轴、采样方法与精度限制；近似点位不能伪装成原始逐样本记录。
不得根据均值和误差条虚构散点，不得从 KM 曲线假装得到真实患者记录，不得从 UMAP 图片恢复所谓真实表达矩阵。
只有不能支持锁定图复现的数据时，不得用任意随机分布通过门槛。

编写内部 `reference_plot.py`，使用参考数据生成锁定图；真实执行，记录命令、退出状态。
抽取布局、字体、配色、图元、坐标、图例、标注规则，集中设置；统计与绘图分离。
不导入参考整图作为背景，不调用生成式模型画点线，不根据像素边缘拼成数据图。
对照片、组织背景等本身就属于数据的栅格层可如实渲染，但其来源和科学含义要核实，不能用它们冒充绘图重建。

## 第4步：核验视觉一致性，未通过就修正

首先读取 [验收与运行协议](references/quality-gates.md)，使用其中命令和 review 字段，不自行省略。
依次执行复现代码、`compare`；打开实际参考、复现图、并排图和叠加图；必要时看原分辨率局部。
比较默认上限 1200 px 仅为节省预览开销，不能把缩略图看不见的错误视为不存在。

至少检查：布局、坐标、图元、字体/标签、数据几何、统计与图例标注。对每一面板检查，不只看整图印象。
调整顺序：画布和面板 → 坐标和数据变换 → 点线/颜色 → 字体图例 → 小间距。
不改变参考实测数据来弥补代码布局错误。

内部循环为：**运行 → 实际看图 → 写具体差异 → 改代码 → 重新运行与比较**。
差异全部消除或降至不影响参考表达且已明确记录的源图分辨率/抗锯齿误差后，才填写真实 review，再调用 `gate`。
不要设置一个通用 SSIM 阈值就自动宣布通过，不把大面积白底导致的高相似度当证据。
数据数字化的局限必须保留，即使视觉通过也不能宣称数据精确恢复。

同一问题连续 3 次没有实质改善时重新定位原因，而非降低验收标准。
无法取得关键数据、缺失关键图层、无法实际读图或运行代码时，禁止假通过；说明具体问题。
不承诺所有未知参考均能达到像素级相同；交付前必须完成明确的视觉一致性核验。

## 第5步：复用通过核验的代码，替换研究数据

实际调用 `check-gate` 成功后，复制已通过的实现作为最终代码基础。
保留渲染函数和已核验样式，只修改数据入口、字段映射、必要统计，以及新数据确实要求的适配。
不把参考数据、参考检验数值、期刊标识或参考分组偷偷保留在研究图中。
内部对代码差异核查：每项布局/尺度变化应由真实数据或用户要求解释。

允许合理改变分组数量、坐标范围、轴标签、图例长度和碰撞间距；不允许改变用户数值、删除不利样本或复制参考结论。
研究数据与参考设计确实不适配时，不能硬塞；选择可比参考并重做复现门槛，或明确无法按该参考作图的原因。

生成最终绘图前数据，保证最终代码只依赖这些数据即可重绘。
使用 [三格式导出组件](assets/export_triplet.py)：把实际需要的函数内联进最终 `plot.py`，不要让最终代码 import Skill 目录。
按任务实际情况修改脚本顶部注释：依赖及实测版本、安装/执行命令、字段/单位、预处理、统计方法、参考来源与图号、近似数据/演示模式说明。
不要把长报告塞入注释；不附单独 README 或 requirements 文件。

最终脚本包含清晰的 `load_data/validate_data/compute_statistics/draw_figure/export_triplet/main` 或同等结构。
配置集中，使用相对路径或显式 CLI 输入；固定随机种子；列缺失、非法数据、未知组别时明确报错。
输入就是处理后的绘图数据：禁止重复归一化；脚本不在内部生成“真实数据”。
缺少真实用户数据时，仅在参考门槛已通过后用明确标注的演示数据测试，并在图中注明 `DEMO — simulated data`，代码和数据同时标明。
参考复现尚未通过时，演示数据不能用来绕过门槛。

颜色不能成为区分类别、方向或显著性的唯一通道；同时使用直接标签、点形、线型或面板结构。对最终实际调色板运行 `figure_tools.py palette`，查看背景对比和色觉缺陷模拟后的成对距离，再实际检查图。该命令只提供诊断，不能自动宣布可访问性通过；连续色图还要检查顺序是否单调、缺失值是否可辨。

## 第6步：重跑、核查并发布

同一次执行、同一个不再修改的 Figure 对象输出 TIF、JPG、PDF。
TIF 无损编码；JPG 高质量 RGB；PDF 保留文字、线条和可矢量化图元。允许热图等必要栅格层，禁止整图位图 PDF。
不逐种格式重新布图；导出后核对三种格式的内容、尺寸、颜色、文字和位置，而不是只检查后缀存在。

将 `plot.py` 与最少绘图前数据复制到全新临时目录，在依赖已安装的环境运行，检查退出状态和输出。
运行不能借用 Skill 工作目录、未交付数据、网络或隐含绝对路径；支持时在禁网/隔离环境运行，不声称普通文件夹就是安全沙箱。
同机同环境比较重新生成图的像素、PDF 渲染和数据标注；不得仅因 PDF 时间戳导致字节不同就误判视觉不同。
记录实际验证的软件环境，不把本机通过夸大为全平台完全一致。

实际查看全部最终格式。用 `audit` 核查 staging 的精确文件集合、数据基本结构、图像尺寸/dpi、PDF 结构等。
检查 `audit` 输出的 `pdf_fonts`，确认文字在目标查看器中可搜索、可复制且未发生替换；是否要求嵌入或转曲以已核实期刊规范为准。不能把“PDF 中出现字体对象”自动解释为所有字体都已正确嵌入。
完成 final review 后调用 `publish`，仅将经过审核且哈希一致的文件发布到全新 final/。
任何未通过项先修正，再从受影响环节重新验证。不要把 `audit` 的结构通过当作统计正确或视觉核验通过。
成功后清理可重建的临时副本，保留前述最小内部审计包；最终交付目录仍只保留那三类产物。

## 运行输出与资源开销

默认用中文；运行进度简洁显示“第1步”至“第6步”，不输出候选池、完整检索日志和内部 review JSON。
优先复用本任务已获取的文件与参数；按需读取 references，不反复向模型输出大数据表；重复绘制交给本地脚本。
多图先完成一张关键图的全流程，再按图族复用实现；每张不同参考仍需对应门槛，不能一次通过替代所有图。

最终回复只提供最终代码、绘图前数据、TIF/JPG/PDF 文件入口。多图按类别合并列出。
若为演示、数字化复现或存在必要使用限制，加一句明确说明；不要把限制藏在长文里。
没有通过时简短说明真实阻断与已完成部分，不伪造文件、不声称后台继续处理。
