科研绘图与发表级图表制作
科研绘图的目的是让读者在最短时间内准确看到结论和证据强度。发表级图表不只是好看,还要满足三点:图形类型与数据结构匹配,能看出样本量和分布;颜色、坐标和标度不误导;尺寸、字号、分辨率和文件格式符合期刊要求,并能由脚本重新生成。生物医学论文中常见的组间比较图、热图、火山图、降维图、生存曲线、富集气泡图、相关矩阵,都可以用 R 的 ggplot2 生态或 Python 的 matplotlib、seaborn 完成,关键在于每个设计选择都有依据。
什么时候用
- 为论文、学位论文或基金申请准备主图和补充图
- 把多个分析结果整理成统一风格的多面板组图
- 审稿意见要求展示单个数据点或修改配色
- 为组学结果绘制热图、火山图、降维图等标准图形
- 需要按期刊要求调整尺寸、字号、分辨率和格式
- 希望用脚本出图,便于数据更新后快速重画
不适合的情况
- 在作图软件里手动修改数据点或局部调整图像亮度
- 用三维柱状图、饼图展示需要精确比较的数值
- 代替统计分析本身,图上的显著性标注必须来自正确的检验
需要准备的数据
- 整理好的数据表
- 长格式为佳,每行一个观测,含分组、样本编号和数值列;作图前确认单位和缺失处理
- 统计结果
- 检验方法、校正后 P 值、效应量和置信区间,用于图上标注,需与正文一致
- 期刊作图要求
- 目标期刊对栏宽、最小字号、分辨率、文件格式和颜色模式的规定,不同期刊差异较大
- 已有图形规范
- 实验室或论文中已用的分组颜色、字体和图例顺序,保证全文统一
分析步骤
- 1
确定每张图的结论
先用一句话写出这张图要支持的结论,再决定画什么。一张面板只回答一个问题;需要读者比较的元素应放在同一坐标轴上并相邻,而不是分散在不同面板。
- 2
选择图形类型
少量样本的组间比较用散点加均值和误差线或箱线图加散点;分布用小提琴图或直方图;趋势用折线;大量基因或样本用热图;差异分析用火山图;构成比例用堆叠条形图。
- 3
设定配色方案
分类变量用区分度高的定性配色,如 Okabe-Ito;数值大小用单色渐变的顺序配色,如 viridis;有中心值的数据如 log2 倍数或 z 分数用发散配色,中点固定在 0。全文同一分组始终用同一颜色。
- 4
处理坐标与标度
跨越多个数量级的数据用对数坐标并在轴标题注明;柱状图的 y 轴应从 0 开始;多个面板需要比较时统一坐标范围。热图颜色上下限可截断到分位数,避免少数极端值压缩其余颜色。
- 5
标注统计信息
在图中或图注写明样本量、误差线含义、检验方法和是否校正。显著性星号要在图注中定义阈值,比较较多时可直接标注校正后 P 值,避免满屏星号和括线。
- 6
按最终尺寸排版
按期刊栏宽设置画布尺寸直接作图,常见单栏约 85–90 mm、双栏约 170–180 mm,最终尺寸下字号通常不小于 6–8 pt。多面板用 patchwork、cowplot 或 matplotlib 的 GridSpec 拼合对齐。
- 7
导出与检查
曲线、散点、文字为主的图导出为 PDF 或 SVG 矢量格式;含显微照片的图按期刊要求导出 TIFF 等位图。用灰度预览和色盲模拟检查可读性,放到 100% 尺寸确认文字清晰。
关键参数与决策
误差线的含义
SD 表示数据离散度,SEM 表示均值估计精度,95% 置信区间更直接表达不确定性。三者长度差别很大,必须在图注中注明;样本量少时优先直接展示每个数据点。
顺序、发散与定性配色
数值从低到高用顺序配色;以 0 或对照为中心的数值用发散配色,如 RdBu 并对称设置上下限;无大小关系的分组用定性配色。用错类型会让读者误判数值高低。
色盲友好
红绿色盲在男性中并不少见,避免只靠红绿区分组别。可选 viridis 系列或 Okabe-Ito 配色,或在颜色之外加入形状、线型差异。jet、rainbow 等彩虹色标亮度不均,会制造虚假边界。
分辨率与格式
矢量图放大不失真,适合统计图;位图需按最终尺寸达到期刊要求的分辨率,照片类常见要求 300 dpi,线条图常更高。不要把低分辨率位图放大后重新导出来凑 dpi。
字体嵌入
matplotlib 导出 PDF 前把 rcParams 的 pdf.fonttype 设为 42,可嵌入 TrueType 字体,文字在 Illustrator 中仍可编辑;R 中可用 cairo_pdf 或 svglite。中文字体未嵌入时,在其他电脑上会显示为方框。
常见错误
- 只画柱状图加 SEM 误差线:每组 3 到 6 个点时完全隐藏了分布和离群值,审稿人常要求改为展示单个数据点。
- 截断柱状图的 y 轴:柱高本应与数值成比例,从非零开始会把很小的差异放大成视觉上的数倍差别。
- 热图不做行标准化直接上色:高表达基因占满颜色范围,低表达基因的变化看不出,通常应按行做 z 分数后再绘制。
- 发散配色中点没有固定在 0:上调和下调的颜色深浅不对称,读者会误判变化方向和幅度。
- 散点抖动不固定随机种子:每次重画点位不同,修稿时图与旧版本对不上,ggplot2 的 position_jitter 可设置 seed。
- 用 RGB 屏幕效果判断印刷效果:部分高饱和颜色印刷后偏暗或偏色,应按期刊要求的颜色模式预览。
结果怎么看
组间比较图
每个点代表一个生物学重复,中心线和误差线含义在图注写明。若点数与正文样本量不一致,或误差线明显短于点的分布范围却未注明是 SEM,读者会对结果产生误解。
热图
看行列聚类是否把预期分组分开,以及颜色条的范围与标准化方式。若样本主要按批次或测序日期聚在一起,而不是按生物学分组,说明需要先处理批次效应再作图。
火山图
横轴 log2 倍数,纵轴负对数校正 P 值,阈值线与正文标准一致。只标注少数关键基因并避免标签重叠,可用 ggrepel。点几乎全部在一侧,提示标准化或分组方向可能有问题。
多面板组图
各面板用字母编号,字号、线宽和配色统一,同类坐标轴对齐,共用的图例只出现一次。缩放到期刊实际尺寸后仍能读清最小的文字和图例才算合格;若需要放大才能看清,应删减面板或拆到补充图。
和相近方法怎么选
ggplot2 与 matplotlib、seaborn
ggplot2 基于图层语法,分组映射、分面和主题统一很方便,生物信息分析多在 R 中完成时首选;matplotlib 控制粒度最细,seaborn 在其上简化了统计图。分析在哪种语言完成,就在哪种语言作图,减少数据转换。
脚本作图与 GraphPad Prism
Prism 上手快,适合少量组间比较和剂量反应曲线;脚本作图可批量生成上百张图、数据更新后一键重画,并能处理热图、降维图等组学图形。组学和需要可复现的分析建议用脚本。
箱线图、小提琴图与柱状图
柱状图的高度代表量,适合展示计数、比例这类从 0 开始累积的数据。连续测量值样本少时用散点加均值,样本较多用箱线图,想展示双峰等分布形状用小提琴图,并叠加数据点或内嵌箱线。
常见问题
论文图片分辨率要多少 dpi?
以目标期刊作者指南为准。常见要求是彩色或灰度照片约 300 dpi,线条图更高,且按图片最终印刷尺寸计算。统计图最好直接提交 PDF、EPS 或 SVG 矢量格式,不存在分辨率问题。
科研绘图怎么配色比较好看?
先按数据类型选配色类别:分组用定性配色,数值用顺序配色,有正负方向的用发散配色。分组不多时用 3 到 6 种区分度高、色盲友好的颜色,同一分组全文保持一致,背景和网格线尽量简洁。
ggplot2 导出的 PDF 在 AI 里文字无法编辑怎么办?
通常是字体被转成了轮廓或未正确嵌入。可改用 svglite 导出 SVG,或在 cairo_pdf 中指定系统已安装的字体;matplotlib 则设置 pdf.fonttype 为 42。同时确认 Illustrator 所在电脑装有同名字体。
柱状图为什么被审稿人要求改成散点图?
柱状图加误差线只展示均值和离散度,隐藏了样本量、分布形状和离群值,小样本时同样的柱高可能对应完全不同的数据。展示每个数据点能让读者自行判断结果可靠性,不少期刊的作者指南也提出了类似要求。
一张图里放多少个面板合适?
以讲清一个结论为界,常见主图包含 4 到 8 个面板。面板太多时缩到栏宽后文字过小,可把次要内容移到补充图。面板顺序应与正文叙述一致,同类面板对齐排列。
在 Codar 里怎么做
在 Codar 里上传数据表或已完成的分析结果,说明图要支持的结论和目标期刊要求。Codar 通过科研可视化与报告能力选择合适的图形类型,统一配色、字号和坐标,标注样本量与统计信息,按指定尺寸绘制组间比较图、热图、火山图等并拼成多面板组图。交付矢量图和位图文件、图注说明、报告以及可重新出图的脚本。
这是 RNA-seq 差异分析结果和 4 组 qPCR 数据,帮我做一张双栏宽度的组图:火山图、热图和带单个数据点的组间比较图,配色要色盲友好