科研可视化代码规范
把绘图代码做成可复现的科研产物,而不是一次性调图脚本。最终判断基于真实数据、实际运行结果和目标版面中的可读性。
路由与边界
先确定任务是新建代码、重构已有代码还是审核代码,并保留用户指定的后端。
- Python/Matplotlib/Seaborn:读取 Python 规范。
- MATLAB:读取 MATLAB 规范。
- 两条路径都读取 共享代码合同;选择字号和尺寸时读取 版式策略与示例 profile;准备交付时读取 输出与验收。
- 目标为 IEEE Transactions 或 Elsevier 时,另读 出版商 Profile,并以具体期刊 Guide for Authors 覆盖通用值。
- 需要将参考论文图先用参考数据复现、通过门槛后再换用户数据时,改用
cell-data-figure。 - 需要生成机制图、图形摘要或概念示意图时,不使用本 Skill。
- 只处理 LaTeX 全文分页、浮动体和投稿材料时,改用
cell-submission。
用户只要求审核时不直接改文件;用户要求生成或修改时才写入代码。已有代码能局部修复就不整体换语言、换库或重写分析流程。
不可破坏的事实
- 不改变观测值、分组、样本身份、单位、时间顺序、统计口径和缺失规则来改善外观。
- 不从图片重建虚假原始点,不用随机数替代缺失实验数据,不复制参考图的 P 值、误差条或效应量。
- 图中 n、误差、区间、显著性和比较对象必须能回到真实输入或已核验计算;设计信息不足时只做有边界的描述性图。
- 用户提供的已有计算结果默认只可视化;除非任务要求,不在绘图脚本中重新训练模型、重新拟合主分析或隐式改变筛选。
- 颜色不能成为唯一信息通道;同时使用线型、标记、标签、位置或面板结构。语义相同的对象在同一项目中保持相同编码。
- 哈希、文件存在、静态配置通过不能证明图正确;必须实际运行并查看输出。
工作流程
1. 锁定输入和用途
读取真实数据、已有代码、目标图和期刊/报告要求。明确每行数据代表什么、独立单位、配对或重复测量、单位、变换、缺失与筛选规则。确定最终使用场景、单栏/双栏/自定义宽度、需要的格式和是否要求可编辑源文件。
未知期刊尺寸时不要伪造官方要求;使用可说明的项目 profile,并把数字标为项目选择。IEEE 8.89 cm 等值只在已确认对应模板时使用。
2. 建立任务 profile
从 示例 profile 复制到任务工作区并替换为实际值。它记录后端、源画布、文档显示宽度、字体层级、线宽、语义颜色、输入和输出,不记录科研结论。native_final_size 的源宽等于显示宽;scaled_source 必须在导出后测量实际 PDF 边界并复核缩放后的可见字号,不能把两种策略的数值混用。
bashpython scripts/check_profile.py path/to/profile.json
检查通过只表示 profile 完整且路径安全。已有项目若使用同等配置对象,不要求为迁就本 Skill 重写格式,但必须保留相同信息。
3. 编写或重构代码
代码至少分离:输入读取、输入验证、必要计算、绘图、导出和入口。样式常量集中管理,单图代码只定义科学内容与必要布局。使用相对路径、命令行参数或显式配置,不写开发者机器的绝对路径。
随机抖动、抽样或布局算法显式保存种子;无随机过程不为形式添加种子。禁止静默捕获异常后继续输出“成功”图。
可从 Python 模板 或 MATLAB 模板 开始,但必须根据真实字段、设计和目标图修改;模板示例不是用户数据或完成证据。
4. 在最终物理尺寸下设计
先确定最终宽高,再设置字体、线宽、标记、图例和子图间距。不要先制作巨大画布再整体缩小,也不要用缩小字体解决布局冲突。单栏和双栏应是独立 profile;复杂多面板从一栏改两栏时重新组织面板,而非简单把宽度乘二。
图例不遮挡数据、科学计数法、误差条或关键区间。自动位置可以作为初值,正式交付前必须实际检查;人工拖动后的坐标要回写代码。
5. 实际运行和双层验收
在干净工作目录用交付代码和必要输入实际重跑。先检查图本身,再检查它插入最终论文/报告后的页面。源图在 100% 缩放下好看,不代表缩放到栏宽后可读。
若 bbox_inches="tight"、外置色条或轴外文字改变 PDF 页面边界,以导出后的实际尺寸为准。检查字体替换、文字是否仍为文字、线条/图元是否保持矢量,以及栅格层是否具有足够分辨率。
6. 交付
交付实际可运行的代码、最少必要输入或输入合同、任务 profile,以及用户或目标期刊要求的图件。MATLAB 在用户需要继续手调时可交 .fig;Python 不制造虚假的可编辑工程格式。
内部保留运行命令、软件版本、输入与输出哈希和实际查看记录;不把缓存、测试图、旧版脚本和未采用 profile 混入最终目录。未实际运行所选后端时,只能交待运行代码并明确未完成运行验收。
完成条件
- 代码从声明的输入重新生成全部声明输出,不依赖开发者绝对路径或未交付的隐藏文件。
- 数据映射、单位、统计标注、样本量和图注含义一致。
- 最终物理尺寸、字体层级、线宽、面板、图例和颜色编码已经实际查看。
- 矢量与栅格格式符合当前任务要求;扩展名与真实格式一致。
- 同一项目的图使用同一个已确认 profile,确需例外时在代码中说明具体原因。
- 插入目标文档后重新编译或渲染并检查;未完成这一项时不宣称出版版面验收通过。


