--- 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 文件入口。多图按类别合并列出。 若为演示、数字化复现或存在必要使用限制,加一句明确说明;不要把限制藏在长文里。 没有通过时简短说明真实阻断与已完成部分,不伪造文件、不声称后台继续处理。