Codar
下载

科研绘图与发表级图表制作

科研绘图的目的是让读者在最短时间内准确看到结论和证据强度。发表级图表不只是好看,还要满足三点:图形类型与数据结构匹配,能看出样本量和分布;颜色、坐标和标度不误导;尺寸、字号、分辨率和文件格式符合期刊要求,并能由脚本重新生成。生物医学论文中常见的组间比较图、热图、火山图、降维图、生存曲线、富集气泡图、相关矩阵,都可以用 R 的 ggplot2 生态或 Python 的 matplotlib、seaborn 完成,关键在于每个设计选择都有依据。

什么时候用

  • 为论文、学位论文或基金申请准备主图和补充图
  • 把多个分析结果整理成统一风格的多面板组图
  • 审稿意见要求展示单个数据点或修改配色
  • 为组学结果绘制热图、火山图、降维图等标准图形
  • 需要按期刊要求调整尺寸、字号、分辨率和格式
  • 希望用脚本出图,便于数据更新后快速重画

不适合的情况

  • 在作图软件里手动修改数据点或局部调整图像亮度
  • 用三维柱状图、饼图展示需要精确比较的数值
  • 代替统计分析本身,图上的显著性标注必须来自正确的检验

需要准备的数据

整理好的数据表
长格式为佳,每行一个观测,含分组、样本编号和数值列;作图前确认单位和缺失处理
统计结果
检验方法、校正后 P 值、效应量和置信区间,用于图上标注,需与正文一致
期刊作图要求
目标期刊对栏宽、最小字号、分辨率、文件格式和颜色模式的规定,不同期刊差异较大
已有图形规范
实验室或论文中已用的分组颜色、字体和图例顺序,保证全文统一

分析步骤

  1. 1

    确定每张图的结论

    先用一句话写出这张图要支持的结论,再决定画什么。一张面板只回答一个问题;需要读者比较的元素应放在同一坐标轴上并相邻,而不是分散在不同面板。

  2. 2

    选择图形类型

    少量样本的组间比较用散点加均值和误差线或箱线图加散点;分布用小提琴图或直方图;趋势用折线;大量基因或样本用热图;差异分析用火山图;构成比例用堆叠条形图。

  3. 3

    设定配色方案

    分类变量用区分度高的定性配色,如 Okabe-Ito;数值大小用单色渐变的顺序配色,如 viridis;有中心值的数据如 log2 倍数或 z 分数用发散配色,中点固定在 0。全文同一分组始终用同一颜色。

  4. 4

    处理坐标与标度

    跨越多个数量级的数据用对数坐标并在轴标题注明;柱状图的 y 轴应从 0 开始;多个面板需要比较时统一坐标范围。热图颜色上下限可截断到分位数,避免少数极端值压缩其余颜色。

  5. 5

    标注统计信息

    在图中或图注写明样本量、误差线含义、检验方法和是否校正。显著性星号要在图注中定义阈值,比较较多时可直接标注校正后 P 值,避免满屏星号和括线。

  6. 6

    按最终尺寸排版

    按期刊栏宽设置画布尺寸直接作图,常见单栏约 85–90 mm、双栏约 170–180 mm,最终尺寸下字号通常不小于 6–8 pt。多面板用 patchwork、cowplot 或 matplotlib 的 GridSpec 拼合对齐。

  7. 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 数据,帮我做一张双栏宽度的组图:火山图、热图和带单个数据点的组间比较图,配色要色盲友好
了解通用科研与数据服务插件