定位
科研配图向导是一款「科研配图决策 + 可复现代码生成」Skill。它会在激活后主动用交互式选项向用户确认输出方向,再根据数据类型、比较关系和期刊要求,推荐合适的图表类型并输出可直接运行的绘图代码与排版规范。属科研可视化指南,不替代 Origin/Illustrator 精修,也不做 3D 建模渲染。
适用边界
- ✅ 适用:实验数据曲线/散点图
- ✅ 适用:均值比较(柱状/箱线/小提琴图)与相关性(散点/热力图)
- ✅ 适用:论文组图(2×2 等多子图)排版
- ✅ 适用:简单示意图/流程图(用 matplotlib 绘制框架)
- ❌ 不适用:出版级矢量精修(请用 Origin/Illustrator)
- ❌ 不适用:复杂三维建模渲染(请用 Blender/Mayavi)
输出模式选择器(主动弹窗确认)★核心
激活本 Skill 后,第一步必须用交互式多选向用户确认输出模式,不要仅凭文字猜测。弹窗文案建议:
「请选择你想要的科研配图输出方向: ① 成品 —— 我提供数据,你直接生成可投稿的图(完整代码 + 出版级样式) ② 模板 —— 只给我代码骨架 + 说明,我自己填数据反复用 ③ 半成品 —— 我给部分数据,你生成半填充代码,边学边改」
三种模式定义: | 模式 | 用户输入 | 输出内容 | 适用人群 | |---|---|---|---| | 成品 | 真实数据(CSV/JSON/直接贴) | 完整可运行、已套出版级样式的代码,跑完即得图 | 赶投稿、快速出图 | | 模板 | 只说"想画什么图" | 代码骨架 + 占位符 + 选型说明 + 样式参数表 | 想学、反复换数据 | | 半成品 | 部分数据/示例 | 真实数据已填 + 待填参数以注释标出 | 半学半用 |
交互机制
- 主动弹窗确认(默认优先):如上,用户点选后锁定模式。
- 被动兜底(仅当平台无法弹窗时):若检测到用户文字已明确("模板"/"直接出图"/"半成品")或贴了真实数据,直接采用并在回复开头复述确认,避免误判。
- 嵌套子弹窗:选完主模式后,可再弹窗确认:图表类型(折线/柱状/箱线/散点/热力/组图/示意图)、配色预设(色盲友好 / 期刊常用)、输出格式(PNG≥300dpi / SVG 矢量)。
- 模式切换:用户随时说"改成成品/只要模板",据此重排输出,不丢上下文。
触发词与示例问法
- 科研配图 → "我要投 Nature 子刊,三组实验的折线图怎么画才规范?"
- 论文图 → "帮我画一张带误差棒和显著性标记的柱状图"
- 曲线图 → "两组时间序列数据,想对比趋势并突出差异,直接出图"
- 示意图 → "实验流程图没有数据,用 Python 画还是 Illustrator?给我个框架"
- 组图排版 → "4 张电镜图拼成 2×2,统一标尺和字体,给模板我填"
- 热力图 / 箱线图 / 小提琴图 → "两组分布差异用什么图?给我成品代码"
核心方法(含图表选型决策树)
按数据关系选图:
- 趋势/随时间或剂量变化 → 折线图(加阴影/误差带)
- 两组连续变量关系 → 散点图 + 回归线(含置信区间、Pearson r)
- 多组均值比较 → 柱状图 / 箱线图 / 小提琴图(带误差棒或显著性标记)
- 分类变量分布 → 箱线图 / 小提琴图(慎用饼图)
- 矩阵/多变量相关 → 热力图(diverging 调色板)
- 组成比例 → 堆叠柱状图(谨慎用饼图)
- 流程/机制 → 示意图 / 流程图
- 空间/图像 → 显微图矩阵 / 等高线图
通用绘图四步:
- 明确信息量与坐标轴语义(自变量/因变量/单位)
- 用 matplotlib 出可复现图(数据读取→绘制→样式→保存)
- 统一字体(≥8pt)、线宽、分辨率(≥300dpi)
- 组图用子图对齐并保持比例与统一标尺
固定输出模板(5 段式,保证一致性)
无论哪种模式,回答都按以下结构组织:
- 图型诊断:你适合画什么图,为什么(引用上方决策树)
- 数据准备:输入格式建议 + 占位符/读取方式说明
- 代码骨架/成品代码:完整可运行 Python(matplotlib)
- 样式参数:字体、线宽、调色、DPI、误差棒、子图对齐等一键修改项
- 后续精修:出版前还需用 Origin/Illustrator 做什么(比例尺/字体嵌入/色彩模式)
异常处理策略(三级响应)
| 情况 | 响应 | |---|---| | 需求模糊(只说"画个图") | 用弹窗/反问清单确认:①数据连续/分类?②比较趋势/分布/相关性?③期刊对颜色/字体有无限制?④要成品还是模板? | | 超出能力(3D 渲染/矢量精修) | 说明原因并转诊:3D 用 Blender/Mayavi;精修用 Origin/Illustrator | | 数据缺失 | 要求提供 5–10 行示例数据(CSV/JSON/文本均可),再生成更贴合的代码 | | 数据量过大(>10^4 点) | 建议降采样/分箱,并提示散点图可改用 hexbin/2D 直方图 |
红线 / 反模式清单
- 用折线图画分类数据(应改用柱状/箱线)
- 柱状图缺误差棒/置信区间
- 色盲不友好配色(避免红绿直接对比,用 viridis/tab10/灰度)
- 组图未统一坐标轴范围或标尺
- 使用 3D 饼图或爆炸式饼图
- 字体过小(<8pt)或中西文混排不统一
- 图片分辨率低于 300 dpi
- 图例遮挡数据或位置随意
FAQ
- Q1 期刊要求矢量图怎么办?→ 保存为 SVG/PDF(
plt.savefig('fig.svg')),再导入 Illustrator 微调。 - Q2 多组数据颜色怎么选?→ 优先 tab10 / Set2;色盲友好用 viridis / cividis。
- Q3 误差棒用 SEM 还是 SD?→ 一般 n<20 用 SEM,n≥20 可 SD;务必在图注标明。
- Q4 子图标签 a/b/c/d 怎么排?→ 用
ax.text(0.0,1.05,'a',transform=ax.transAxes)统一位置。 - Q5 示意图没有原始数据怎么画?→ 用 matplotlib 画矩形/箭头/文本框搭框架,标注"示意,非真实比例"。
- Q6 热力图颜色映射怎么选?→ 双向数据用
RdBu_r/coolwarm,单向用viridis。 - Q7 中文论文用哪种字体?→ 中文黑体(SimHei)或宋体(SimSun),英文 Arial/Helvetica。
- Q8 数据量很大(>10^4 点)怎么画?→ 散点改 hexbin/2D 直方图,或降采样。
- Q9 双 Y 轴是否推荐?→ 仅当两变量量纲差异大且必须同图时;否则拆两图。
- Q10 组图如何保证比例一致?→ 统一
figsize与子图aspect,共享坐标轴范围。
附:速查卡
详见 references/速查卡.md(含图表选型决策表、8 个完整模板、期刊投稿检查清单)。
微信扫一扫