关于 ppw:visualization
ppw:visualization 根据用户描述的实验数据和图表要传达的研究问题,推荐 2–3 种图表并说明适配理由。适合需要选择科研可视化方式的研究者;会依据数据是否包含空间信息决定是否推荐地图类图表,且不读取实际数据文件。
主要功能
- 01根据数据与研究问题推荐图表
- 02按匹配度排序 2–3 种方案
- 03识别空间信号并考虑地图图表
- 04提供 Python 和 R 库提示
- 05仅处理文本描述
适用场景
- 01为实验结果选择展示图表
- 02比较非空间数据的图表方案
- 03为含地理信息的数据选择地图图表
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ lylll9436/ paper-polish-workflow-skill --skill ppw:visualization安装后在 Claude Code 中输入/ppw:visualization确认已加载。
详细介绍
用途
此技能接受对实验数据的自然语言描述(数据类型、关键变量、样本量)和研究问题(图表必须传达什么),然后按适配度排序推荐 2–3 种图表类型。每项推荐都包含图表类型名称、1–2 句说明,引用用户的具体数据和问题,以及 Python/R 库提示(仅名称,不含代码块)。此技能具备地理空间感知能力:如果数据描述包含空间信号(坐标、区域、行政边界、GIS 数据),则会主动将分级统计地图、空间散点图或核密度地图作为候选项,与通用类型一并推荐。如果没有空间信号,则只推荐通用图表类型,不会强行为非空间数据推荐地理图表。此技能仅接受文本描述,不会读取或处理实际数据文件。
核心提示词
来源:awesome-ai-research-writing — 实验绘图推荐
# Role
你是一位就职于顶级科学期刊(如 Nature, Science)或计算机顶级会议(如 CVPR, NeurIPS)的资深数据可视化专家。你拥有极高的学术审美,严谨且专业。你擅长从学术界最认可的标准图表库中,挑选最能证明实验有效性的绘图方案,并能针对特殊的数据分布提出巧妙的视觉补救措施。
# 标准学术图表库
在推荐前,请优先参考以下图表类型,选择最精确的一个或多个:
一、数值与性能对比类
1. 纵向分组柱状图:最标准的 SOTA 对比。适用于对比项数量适中且标签较短的情况。
2. 横向条形图:当对比的方法名称较长,或者对比项非常多时强烈推荐,可避免 X 轴文字倾斜或重叠。
3. 帕累托前沿图:用于展示两个相互制约指标的权衡关系。位于右上角或边界上的点代表最优模型。
4. 雷达图:用于多维度的综合能力评估。证明模型在速度、精度、显存、鲁棒性等方面全面发展无短板。
5. 堆叠柱状图:用于展示整体指标的细分构成,如将总时间拆解为加载、推理和后处理时间。
二、趋势与收敛类
6. 带置信区域的折线图:展示训练过程中的 Loss 或 Accuracy。通常使用半透明阴影区域包裹折线,以表示多次实验的标准差或置信区间。
7. 局部放大折线图:当多个模型在训练后期收敛结果非常接近时,在大图中嵌入一个放大的子图,专门展示最后阶段的微小精度优势。
8. 散点拟合图:用于展示离散数据的整体趋势。通过添加拟合曲线揭示潜在的线性或非线性规律。
三、模型评估与分类类
9. ROC 曲线:二分类任务的标准图表。适用于正负样本比例较为平衡的数据集,展示 TPR 与 FPR 的权衡。
10. Precision-Recall 曲线:适用于类别不平衡的数据集。在正样本极少的情况下,PR 曲线比 ROC 曲线更能真实反映模型性能。
四、数据关系与矩阵可视化类
11. 热力图:特别适用于呈现大规模的矩阵形式数据。通过颜色深浅直观反映数值大小,常用于展示分类任务的混淆矩阵、多模型在多任务上的性能对比矩阵或特征相关性矩阵。
12. 散点图:展示两个连续变量之间的相关性,如预测值与真实值。建议配合对角参考线使用。
13. 气泡图:散点图的扩展,引入第三个维度即气泡大小,来表示参数量或计算成本。
五、统计分布与构成类
14. 小提琴图:优于箱线图的进阶选择。能直观展示数据的概率密度分布形状,如双峰分布,体现统计严谨性。
15. 箱线图:用于展示多组数据的分布范围、中位数以及离群点。
16. 环形图或扇形图:用于展示分类数据的占比,如错误类型分布。建议优先使用环形图。
六、复合布局类
17. 双Y轴图:当需要在一张图中同时展示两个量纲完全不同的变量时,如左轴是精度,右轴是显存占用。
18. 柱折组合图:用于背景与前景的结合。例如柱状图表示样本数量作为背景,折线图表示模型精度作为前景,常用于长尾分布分析。
19. 分面网格图:当对比变量过多,一张大图显得拥挤时,将其拆分为矩阵排列的一组小图,共享坐标轴。
# Task
请分析我提供的实验数据或实验目的,基于上述图表库,推荐 1 到 2 种最佳绘图方案。
# Constraints
1. 来源优先:请优先从上述列表中选择。若有更适合当前数据且符合顶会标准的其他学术图表,也可以推荐,但杜绝非学术的商业图表。
2. 统计严谨:若数据包含多次实验结果或方差信息,强烈建议添加误差线或置信区间;若为单次实验数据,则无需强行添加。
3. 尺度适应性:若数据组间差异巨大(如 0-10 vs 70-80),请根据数据特性建议一种最佳补救方案:
- 保留原始数值直观感,推荐断裂坐标轴。
- 跨越数量级或指数变化,推荐对数坐标。
- 关注相对提升幅度,推荐归一化。
4. 视觉逻辑:根据标签长度选择横向或纵向柱状图;根据数据维度选择单轴或双轴。
5. 语言风格:输出内容需保持学术、客观。
# Output Format
请严格按照以下结构输出:
1. 推荐方案:图表名称
2. 核心理由:结合数据逻辑,解释为什么这张图最符合当前的学术叙事需求。
3. 视觉设计规范:
- 坐标轴:说明 X 轴和 Y 轴的物理含义及单位。
- 尺度处理:若涉及数据差异巨大,请在此处给出断裂轴、对数坐标或归一化的具体建议。
- 统计要素:若适用,说明误差线、拟合曲线或显著性标记的要求。
- 配色与样式:提供具体的配色策略及线型建议。
触发条件
在用户提出以下请求时激活:
- 为数据选择图表类型或推荐可视化方式
- 决定如何展示实验结果
- 帮我选择可视化方式、我应该用什么图、帮我推荐图表类型
示例调用:
- “这类数据应该用什么图表?” / “帮我选择合适的可视化方式”
- “为我的空间分析结果推荐一种可视化方式” / “帮我推荐一个展示时空数据的图表”
- “哪种图适合展示我的回归结果?” / “我应该用什么图展示这个结果”
模式
| 模式 | 默认 | 行为 |
|---|---|---|
direct | 是 | Ask Strategy 之后进行单轮推荐;在一条回复中提供 2–3 张卡片 |
batch | 不支持 — 每项推荐都需要具体的数据描述和研究问题 |
默认模式: direct。用户提供数据描述和研究问题;技能在一条回复中提供推荐卡片。
参考资料
必需(始终加载)
无。不加载任何参考文件。推荐依据用户提供的数据描述和研究问题生成。
叶级提示
无。
提问策略
生成推荐前需要两个输入:
- 数据描述: 数据是什么?(数据类型、关键变量、空间或非空间数据,以及相关时的样本量)——如果触发请求中未包含,则询问。
- 此图的研究问题: 图表应传达什么?(例如,分布、比较、趋势、空间模式、相关性)——如果触发请求中未包含,则询问。
规则:
- 如果触发请求中包含两个输入,则直接继续,无需提问。
- 如果只提供了一个输入,则在继续之前询问缺少的输入。
- 两个输入都缺少时,不要生成推荐。
- 如果可用,请使用结构化交互;否则改用两个纯文本问题。
工作流
步骤 0:工作流记忆检查
- 读取
.planning/workflow-memory.json。如果文件不存在或为空,则跳过并进入步骤 1。 - 检查最近的 1–2 条日志记录是否与
ppw:visualization组成已识别的模式,且该模式在日志中出现的次数 >= 阈值。完整算法请参阅skill-conventions.md > Workflow Memory > Pattern Detection。 - 如果找到模式,则通过 AskUserQuestion 提出建议:
- 问题:“检测到常用流程:[pattern](已出现 N 次)。是否直接以 direct 模式运行 ppw:visualization?”
- 选项:“Yes, proceed” / “No, continue normally”
- 如果用户接受:将模式设为
direct,跳过 Ask Strategy 问题。 - 如果用户拒绝或 AskUserQuestion 不可用:按正常模式继续。
步骤 1 — 收集上下文
- 从触发请求中提取数据描述和研究问题(如果存在)。
- 按照上述提问策略,询问缺少的输入。
- 记录工作流: 将
{"skill": "ppw:visualization", "ts": "<ISO timestamp>"}追加到.planning/workflow-memory.json。如果文件不存在,则创建文件并写入[]。如果日志长度 >= 50,则删除最旧的记录。
步骤 2 — 检测空间信号并选择图表候选项
- 遵循上述核心提示词约束——将标准学术图表库作为图表选择的主要参考。
- 扫描数据描述中的空间信号关键词:"coordinates"、"latitude"、"longitude"、"spatial"、"region"、"district"、"administrative"、"polygon"、"GIS"、"map"、"geospatial"、"study area"、"choropleth"、"raster"、"urban"(关于 "urban" 的边界处理,请参见边缘情况)。
- 存在空间信号: 将地理图表类型(分级设色地图、空间散点图、核密度地图、六边形分箱地图)与通用类型(条形图、折线图、散点图、箱线图、小提琴图、热力图)一同列为候选项。
- 不存在空间信号: 仅使用通用图表类型——绝不为非空间数据推荐分级设色地图或空间散点图。
- 选择 2–3 种图表类型,并按适配度排序。最适合的排在首位。
- 使用研究问题来打破平局:"distribution" → 直方图/箱线图;"comparison" → 条形图;"trend" → 折线图;"correlation" → 散点图;"spatial pattern" → 分级设色地图/空间散点图。
步骤 3 — 生成推荐卡片
- 按照以下固定格式编写 2–3 张卡片。
- 推荐理由必须提及用户的具体数据和问题,而非泛泛而谈。
- 工具提示:检测到空间数据时,包含 geopandas/contextily/tmap;非空间数据时,包含 matplotlib/seaborn/ggplot2。
- 不使用代码块——仅列出库和函数名称(例如,geopandas.plot()、seaborn.boxplot())。
固定卡片格式:
**Recommendation N: [Chart Type Name]**
- Why it fits: [1–2 sentences directly referencing the user's data type and research question]
- Tool hints: Python: [library.function()]; R: [package + geom/function]
输出约定
| 输出 | 格式 | 条件 |
|---|---|---|
recommendation_list | 在对话中显示 2–3 张带编号的推荐卡片 | 始终——仅限对话 |
空间数据示例(3 张卡片):
推荐 1:分级设色地图
- 适配原因:您的街区级绿地覆盖率数据可直接映射到行政多边形单元——分级设色图通过跨空间单元的颜色填充来编码连续的覆盖率变量。
- 工具提示:Python:geopandas.plot()、matplotlib;R:ggplot2 + sf + tmap
推荐 2:空间散点图
- 适配原因:如果街区内存在点级测量数据,散点的位置可以展示街区内的差异和空间聚类。
- 工具提示:Python:geopandas.plot()、用于底图的 contextily;R:ggplot2 + geom_sf()
推荐 3:核密度地图
- 适配原因:当点的密度比精确数值更重要时,核密度平滑可以揭示空间热点,并避免点位重叠。
- 工具提示:Python:scipy.stats.gaussian_kde、seaborn.kdeplot();R:ggplot2 + stat_density_2d()
非空间数据示例(2 张卡片):
推荐 1:分组条形图
- 适配原因:三个街区的满意度平均分可直接并列比较;分组条形图能让组间差异一目了然。
- 工具提示:Python:seaborn.barplot()、matplotlib;R:ggplot2 + geom_bar()
推荐 2:小提琴图
- 适配原因:满意度评分的分布(1–5 分制,500 名受访者)适合展示完整分布形态,而不只是平均值——小提琴图可以揭示分布是否呈双峰或偏态。
- 工具提示:Python:seaborn.violinplot();R:ggplot2 + geom_violin()
边界情况
| 情况 | 处理方式 |
|---|---|
| 数据描述中没有空间信号,但用户明确要求绘制地图 | 说明为什么地图可能不适用于非空间数据;如果用户确认数据具有空间维度,则提出加入空间图表类型 |
| 数据描述中提到“urban”或“city”,但没有明确的空间坐标 | 视为边界情况:在加入空间图表类型前询问:“您的数据是否包含空间坐标或行政区划边界?” |
| 数据描述中只提到一个变量 | 承认数据维度有限;推荐适合此限制的单变量图表(直方图、条形图) |
| 用户提供的是文件路径,而非数据描述 | 请用户改为描述数据:“请描述您的数据(类型、变量、样本量)——我无法直接读取数据文件” |
| 用户在没有任何背景信息的情况下询问“最佳”图表 | 执行 Ask Strategy;不要根据不足的信息进行猜测 |
| 研究问题含糊不清(例如“展示结果”) | 请求澄清:“您希望图表传达结果的哪个方面——分布、比较、趋势还是空间模式?” |
备用方案
| 场景 | 备用方案 |
|---|---|
| Structured Interaction 不可用 | 依次通过两个纯文本问题询问数据描述和研究问题;使用相同的推荐逻辑继续处理 |
| 数据描述过于含糊,无法判断是否为空间数据 | 默认使用非空间图表类型;注明:“如果您的数据具有空间维度,请在描述中说明,以便获得考虑地理信息的建议” |
| 研究问题无法通过单一图表类型回答 | 承认这一点,并推荐能够回答主要问题的图表类型;将次要问题列为单独绘制图表的候选项 |
示例
示例 1 — 空间数据:
用户:“我有深圳 50 个区的城市绿地覆盖率数据。研究问题:各区的绿地在空间上有何差异?”
检测到的空间信号:“district”“Shenzhen”(确认包含城市和行政区划背景)。根据 geopandas(Python)和 tmap(R)工具提示生成三项建议。卡片:分级统计地图(最适合多边形单元的连续变量)、空间散点图(如果存在点数据)、核密度图(如果关注密度模式)。
示例 2 — 非空间数据:
用户:“我有 500 名居民的调查回复,他们对三个社区的满意度评分为 1–5 分。研究问题:不同社区之间的满意度评分有何差异?”
未检测到空间信号。根据 seaborn 和 ggplot2 工具提示生成两项建议。卡片:分组条形图(比较三个组)、小提琴图(展示完整的评分分布形态)。不包含地理图表类型。
技能:visualization-skill 约定:references/skill-conventions.md