可视化检查Skill visualization-check

可视化检查是一个用于审查数据可视化图表清晰度的技能,通过上下文无关的智能代理作为天真读者,确保图表在无额外上下文中能清晰传达核心信息。适用于R或Python绘图脚本的迭代优化,关键词包括数据可视化、图表审查、可视化最佳实践、R脚本、Python脚本和上下文无关审查。

数据可视化 0 次安装 0 次浏览 更新于 3/12/2026

name: visualization-check description: 用于审查数据可视化或图形的清晰度,检查图形是否能在没有额外上下文的情况下传达其信息,或迭代R/Python绘图脚本,直到天真读者能完全理解图形。

可视化检查

使用上下文无关的子代理作为天真读者的迭代审查循环。子代理仅看到图像——没有研究上下文、没有轴解释、没有预期结论。如果子代理无法理解图形,真实读者也无法理解。

何时使用

  • 生成图形后(R、Python或任何工具)
  • 提交图形用于出版前
  • 当图形感觉不清晰但无法确定原因时
  • 当需要客观的“新鲜眼光”反馈时

工作流程

digraph viz_check {
  rankdir=TB;
  node [shape=box];

  start [label="用户提供图像路径
(可选生成脚本)" shape=doublecircle];
  preprocess [label="下采样为预览
(sips → /tmp)"];
  launch [label="派遣审查子代理
(只读,上下文无关)"];
  feedback [label="子代理返回结构化报告:
理解度 / 问题 / 评级"];
  decide [label="清晰度 >= 4 且
主要信息正确?" shape=diamond];
  analyze [label="将反馈映射到
可操作的脚本更改"];
  fix [label="编辑生成脚本
+ 应用可视化最佳实践"];
  render [label="重新渲染图形"];
  done [label="图形通过天真读者测试
— 完成" shape=doublecircle];

  start -> preprocess;
  preprocess -> launch;
  launch -> feedback;
  feedback -> decide;
  decide -> done [label="是"];
  decide -> analyze [label="否"];
  analyze -> fix;
  fix -> render;
  render -> preprocess [label="下采样新
渲染 + 派遣
新子代理"];
}

步骤0:为子代理预处理图像

高DPI出版图形(300 DPI,2000-4500px宽)会消耗过多上下文标记并可能导致子代理达到上下文限制。 在派遣前始终下采样。

预处理命令

使用 sips(macOS内置)创建预览副本:

sips --resampleWidth 800 "{ORIGINAL_PATH}" --out "/tmp/viz_check_preview.png"

规则

  • 在派遣前始终下采样,无论文件大小。这很便宜且能防止失败。
  • 预览保存到 /tmp/ — 永不修改原始图形。
  • 在子代理提示中使用预览路径 (/tmp/viz_check_preview.png),而非原始路径。
  • 每次重新渲染后重新预处理 — 原始图形变化,预览必须重新生成。
  • 对于多图形并行模式,使用唯一文件名:/tmp/viz_check_preview_{basename}.png

多图形预处理

并行审查多个图形时,先批量预处理:

for fig in path/to/figures/*.png; do
  basename=$(basename "$fig")
  sips --resampleWidth 800 "$fig" --out "/tmp/viz_check_preview_${basename}"
done

然后为每个子代理派遣对应的 /tmp/viz_check_preview_{basename}.png

步骤1:派遣天真读者子代理

您必须为每轮审查派遣一个审查子代理。 不要试图自我审查 — 关键是上下文无关的眼光。

子代理配置

设置 原因
subagent_type Explore 只读工具(Read、Glob、Grep)。防止意外修改脚本或图形。
max_turns 3 子代理只需读取图像并写入报告。
Resume 永不 每轮使用新的子代理。永不恢复之前的审查者。

子代理提示模板

您是第一次看到这个图形的天真读者。您没有关于研究、数据或目的的任何上下文。读取图像文件,然后生成结构化审查。

## 图像
读取图像文件:{PREVIEW_PATH}

## 结构化审查模板

### A. 理解(您理解的内容)
1. 这个图形展示什么?用您自己的话描述。
2. 轴/标签是什么?总结每个。
3. 主要信息或要点是什么?

### B. 混淆点(不清晰的内容)
列出所有不清晰、模糊或难以阅读的元素。具体说明 — 引用位置(左上角、底部面板等)并引用任何有问题的文本。

### C. 视觉质量检查清单
对每个项目,标记通过 / 失败 / 不适用:
- [ ] 颜色可区分(灰度下也可区分?)
- [ ] 所有文本在此尺寸下可读(标签无重叠?)
- [ ] 参考线 / 阈值已标注
- [ ] 没有不必要的图表装饰(网格线、边框、装饰)
- [ ] 图例(如果有)在没有上下文的情况下自解释
- [ ] 良好的数据墨比率(数据与非数据元素)
- [ ] 缩写已拼写或自明显

### D. 清晰度评级
评分1(无法理解)到5(立即清晰)。用一句话说明理由。

### E. 前3个推荐修复
优先级最高的改进列表。

上下文污染规则

不要在子代理提示中包含:

  • 研究描述或目的
  • 轴代表什么
  • 预期结论或趋势
  • 变量名或领域术语解释
  • 先前迭代的反馈
  • 生成脚本或其路径

甚至说“这是生存曲线”都透露太多信息。让子代理自己理解。

步骤2:分析反馈

将子代理的混淆点映射到具体的脚本更改:

子代理说 可能的修复
“无法读取轴标签” 增加 axis.text 大小,减少刻度密度
“不知道颜色含义” 添加/改进图例,使用更明显的调色板
“太多线条/元素” 简化:减少序列,使用分面而非叠加
“这条虚线是什么?” 直接在图上标注参考线
“无法判断趋势” 增加线宽,减少噪音,添加平滑
“轴令人困惑” 更好的轴标题,考虑对数尺度,添加单位
“太杂乱” 移除网格线,减少图表装饰,增加空白
“颜色看起来相似” 使用色盲安全调色板(viridis、okabe-ito)
“缩写不清晰” 首次使用时拼写,或添加副标题/脚注

步骤3:应用数据可视化最佳实践

修复层次(影响最大优先)

  1. 标签和标题:自解释的轴标签带单位。无缩写。
  2. 参考线:直接在图上标注(不仅在图例中)。
  3. 颜色:色盲安全,灰度下可区分。使用 scale_color_viridis_d() 或 Okabe-Ito。
  4. 简化:移除冗余网格线、边框、背景。theme_minimal()theme_classic()
  5. 文本大小:所有文本在最终打印尺寸下可读(通常最小8-10点)。
  6. 数据墨比率:最大化数据,最小化装饰。
  7. 直接标注:尽可能直接标注线条/点而非使用图例。

R特定模式

# 出版图形的良好默认
theme_publication <- theme_minimal(base_size = 14) +
  theme(
    axis.title = element_text(size = 14, face = "bold"),
    axis.text = element_text(size = 12),
    legend.position = "bottom",
    panel.grid.minor = element_blank(),
    plot.title = element_text(size = 16, face = "bold")
  )

# 色盲安全调色板
scale_color_viridis_d()           # 顺序
scale_color_brewer(palette = "Set2")  # 分类

步骤4:重新渲染和迭代

  1. 用修复编辑生成脚本(修复源文件,而非PNG)
  2. 重新运行脚本以生成更新的图形
  3. 重新预处理sips --resampleWidth 800 新渲染到 /tmp/(旧预览已过时)
  4. 派遣新子代理(新上下文,相同模板)指向新预览
  5. 退出条件:子代理评级清晰度 >= 4/5 且正确识别主要信息

典型迭代:2-3轮。

多图形模式

审查多个独立图形时,并行派遣审查子代理 — 每个图形一个。每个子代理仅接触自己的图像(无共享状态)。

digraph multi_fig {
  rankdir=LR;
  node [shape=box];
  dispatch [label="并行派遣N个子代理"];
  fig1 [label="子代理1
审查fig1.png"];
  fig2 [label="子代理2
审查fig2.png"];
  fig3 [label="子代理3
审查fig3.png"];
  collect [label="收集所有报告
并顺序修复"];

  dispatch -> fig1;
  dispatch -> fig2;
  dispatch -> fig3;
  fig1 -> collect;
  fig2 -> collect;
  fig3 -> collect;
}

对于共享视觉一致性要求的图形(相同配色方案、轴样式),在单个审查后进行最终合成步骤以检查跨图形一致性。

常见陷阱

  • 将上下文泄露给子代理:最常失败的模式。在派遣前检查提示。
  • 重用同一子代理:先前的反馈造成污染。始终派遣新的。
  • 过度迭代:如果子代理正确识别主要信息但挑剔美学,即已完成。
  • 忽略生成脚本:修复源文件(R/Python脚本),而非PNG。确保可重复性。
  • 使用通用子代理:使用 Explore(只读)以防止审查者意外修改文件。

快速开始

/visualization-check path/to/figure.png

如果还知道生成脚本:

/visualization-check path/to/figure.png --script path/to/plot_script.R

代理将:

  1. 找到生成脚本(如果未提供,搜索它)
  2. 下采样到 /tmp/ 预览 (sips --resampleWidth 800)
  3. 用预览路径派遣天真读者子代理(只读,上下文无关)
  4. 收集结构化反馈报告
  5. 编辑脚本并重新渲染
  6. 重新预处理 + 派遣新子代理进行重新审查
  7. 重复直到清晰度 >= 4/5