| name | cf-draw-rules |
| description | 在 common_func 项目中需要检查、优化或制定论文图/科研图的视觉规范时触发。用于指导图的可读性、精简性、对齐、颜色、图形多样性、易懂性、留白、重点突出和常见绘图技巧。通常与 cf-plotting 一起使用:cf-plotting 负责调用 common_functions.py 的绘图接口,本 skill 负责判断图是否清楚、美观、统一、适合正文展示。 |
CF Draw Rules
这个 skill 用于把科研图画得清楚、统一、适合论文正文展示。写绘图代码时优先配合 cf-plotting 使用;如果任务是审图、改图、统一图风格或给绘图方案提建议,则以本 skill 为主要检查标准。
可读性
文字大小整体统一,并且在正文展示时应足够清楚,至少接近正文文字的 80%。子图很多、子图很少、半栏图和整栏图应使用不同的字体大小,不要机械套用同一套参数。
线条、点、marker、误差线和 colorbar tick 都要足够大,保证读者在正文尺度下直接看清,不需要放大。点太多时优先考虑使用 alpha、density scatter、hexbin 或其他密度表达,不要单纯把点缩得很小。
精简性
移除无关的 x/y tick。除非数据解释确实需要,否则只保留最重要的刻度,例如起点、终点或少数关键值,并尽量减少小数位。
默认移除右侧和上侧 spine。多个子图放在同一张大图时,重复 legend 不要每个子图都放一份;如果含义一致,优先只展示一次公共 legend。
对齐性
所有子图应按某种明确规则对齐。可以是坐标轴黑框全部对齐,也可以是视觉重心对齐,但不能让子图看起来随机漂移。
多子图中要注意 xlabel、ylabel、title、colorbar、legend 和 panel tag 的位置,不要因为文字长度或 colorbar 导致主体 ax 面积明显不一致,除非布局本身有明确的强调目的。
颜色选择
颜色要大气且统一。统一不仅指同一张图内部,也包括同一篇文章或同一组结果中的所有图片。
如果颜色编码了某个对象、方法、类别或条件,这套颜色映射应在所有图片中完全一致。不要在不同图中让同一含义对应不同颜色。
避免使用彩虹 colormap。优先选择色盲友好、对比适中、语义清楚的配色。
多样性
图不要过于重复和单调。如果已经使用了多个散点图,可以考虑换成 bar、violin、box、hist、density、line、heatmap 等更适合当前问题的表达方式。
布局也不必总是规则 gridspec。根据展示重点,可以让重要图更大、辅助图更小;对于局部细节,可以使用 zoom-in、inset 或拆分子图帮助读者理解。
易懂性
图表最好尽量自明。如果有可能,把文字直接放在对应元素附近,而不是完全依赖 legend。直接标注方法名、关键条件、拟合结果或重要区域,通常比让读者反复查 legend 更清楚。
图内文字不能遮挡关键数据、拟合线、误差带、峰值或主要结构。没有足够空白时,legend 或说明文字应放到图外。
留白
不要让图片显得过于拥挤。适当留白可以帮助读者区分图中元素,也能让重点更突出。
多子图 figure 中尤其要检查子图间距、边距、colorbar 和 legend。信息密度高不等于把所有元素塞满画布。
重点突出
展示有中心含义的数据时,应使用对比型 colormap,例如蓝色-白色-红色,并在需要时把白色对齐到特定中心点,例如 0。
展示无中心含义的数据时,不应使用对比型 colormap。强度值、概率、密度、频率等更适合使用渐进型 colormap。
可以根据需要重新排序绘制点、类别或方法,以增强可视化效果,让读者更容易看出结构。
如果想重点展示某个方法,可以单独给它配置醒目的颜色,例如红色;其余多个对照方法可以使用同一色系,例如蓝色系,从而突出主方法。
常见技巧
xylabel 很长时,可以换行分成多行展示。
五个子图可以考虑上面三个、下面两个的布局,不一定强行排成一行或规则矩阵。
如果 xtick label 很多,多到必须旋转 90 度才能展示,通常更适合把图横过来画,让这些标签变成 ylabel。
检查顺序
完成绘图后按下面顺序检查:
- 正文尺度下文字、线条和点是否看得清。
- tick、spine、legend 是否有不必要重复。
- 子图主体区域、标签、colorbar 和 legend 是否对齐。
- 颜色映射是否统一、色盲友好,并且符合数据语义。
- 图形类型和布局是否过于单调,是否有更清楚的表达。
- 是否可以用直接标注减少读者查 legend 的负担。
- 是否过于拥挤,是否需要留白或移出 legend。
- 重点是否明确,主方法、中心点或关键结构是否被突出。