跳到正文
百沐一下百沐一下
本节目录

智能绘图:从数据到出版级图表

跟完这篇,您能在「百沐一下」不写一行代码,把一张整洁的数据表变成一张能投稿的图:上传数据、用一句话说清要什么图,再对着出来的图一句句地改配色、改字号、加显著性标注,直到样式达到期刊要求,最后连图带可复现代码一起导出。

绘图这件事,难的往往不是「画出来」,而是「画对、画美、改到能过审」。智能绘图把它拆成三个动作:给一张整洁表 → 一句话说要什么图 → 对着图对话式微调。下面按这条路走一遍。

步骤您要做的结果
1. 进入入口点【数据分析 → 智能绘图】打开绘图界面
2. 给数据上传整洁表格,或选公共数据数据就位
3. 说图型一句话,如「按分组画表达量箱线图」出第一版图
4. 改配色「换成 Nature 风格 / 色盲友好配色」即时重画
5. 改字号图例「坐标轴字放大到 8pt,图例挪右侧」即时重画
6. 加显著性「组间加显著性星号,t 检验」星号标上
7. 导出「按单栏 89mm、矢量 PDF 导出」出版级图 + 代码

进入「数据分析 → 智能绘图」

  1. 登录后,在左侧导航点【数据分析】,再点【智能绘图】。
  2. 进入的是一个对话式界面:上半部分放数据、看图,下半部分是输入框,您在这里用自然语言说想要什么图、想怎么改。
  3. 出图会消耗沐豆,界面会在开跑前给出预估,余额不足会提醒。任务失败自动全额退回沐豆,每次重画也会重新预估,可以放心多试几版。

智能绘图覆盖箱线图、柱状图、火山图、热图、生存曲线、气泡图等几十种常见图型,比较、分布、关系、占比、时序都能画。本篇以最常见的「分组箱线图 + 显著性」走一遍,其他图型的操作节奏是一样的。

上传数据:一张整洁表格就够

绘图的起点是一张整洁(tidy)表格每行一个观测,一列放分组,一列放要画的数值。是这个形状,后面所有图都能直接套。

samplegroupvalue
s1Ctrl12.4
s2Ctrl10.9
s3Treat18.2
s4Treat16.7

两条最容易被绊倒的地方,上传前先自查:

  • 别用「一组一列」的宽表。像「Ctrl、Treat 各占一列」这种宽表,先转成上面这种「分组 + 数值」的长表再画。整洁数据的更多细节见 统计方法怎么选
  • 分组列、数值列要干净。分组名前后别带多余空格,数值列别混进文字或单位;缺失值太多会让某些图画不出来。

手头没数据、或想先练手,可以直接从平台的「公共数据挖掘」选一份 TCGA / GEO 数据,或从「我的文件库」调用已上传的文件。格式细则见 上传数据的格式要求

一句话说清「要什么图」

数据就位后,用一句「拿哪列、画什么图、怎么分组」的话,智能绘图就能出第一版。几个能直接照抄的写法:

按 group 分组,画 value 的箱线图,每组叠上散点。
画火山图,x 是 log2FoldChange,y 是 −log10(padj),标出前 10 个基因。

一句话里最好包含这三样,出来的图就贴近您想要的:

  1. 图型:箱线图、柱状图、火山图、热图……说清楚;拿不准时也可以让它「按这份数据推荐一种合适的图」。
  2. 拿哪几列:横轴、纵轴、分组分别用哪一列(如 groupvalue)。
  3. 可选偏好:要不要叠散点、要不要分面、大致配色风格。没写也行,它会用常规默认值先出一版,您再改。

第一版不必一步到位——先出个大致对的图,剩下的全靠对着图改。这也是智能绘图最省事的地方。

对着图改:配色、字号、显著性

出图后,不满意的地方直接在对话框里说,它只重画这一处,不用从头再来。这是本篇的重点,分三类最常改的说。

换配色

配色不是审美问题,是准确传达数据的问题:分类数据、连续数据该用的配色大类不同,还要考虑色盲读者。直接说风格即可:

换成 Nature 风格配色。
分组用色盲友好的定性配色。
热图改成蓝-白-红发散配色,以 0 为中点。

它交回的代码是标准写法,比如套期刊配色、或换感知均匀的连续配色:

library(ggsci)

p + scale_color_npg()          # Nature 风格定性配色(分类用)
# 连续量(如热图、密度)换感知均匀、色盲友好的配色:
# p + scale_color_viridis_c()

一条经验:分类数据用定性配色(如 Okabe-Ito、期刊配色),单向连续量用 viridis,双向(含 0)用蓝-白-红发散配色。 期刊配色好看但不保证色盲友好,关键的两组对比最好再自查一遍。配色怎么选得既好看又不误导,见 科研配色与色盲友好方案

调字号与图例

图缩到栏宽后,最先看不清的就是文字。趁早说清字号和图例位置:

坐标轴刻度和标题字放大,图例挪到右侧。
去掉图例标题,字体统一用无衬线体。

对应的标准做法是在主题里统一控制:

library(ggplot2)

p + theme_classic(base_size = 8) +          # 全图基准字号,按最终尺寸调
  theme(
    legend.position = "right",              # 图例位置
    text = element_text(family = "Helvetica")   # 全图统一无衬线字体
  )

字号要以最终印刷尺寸衡量:正文级的字(刻度、图例)一般别小于约 6~7pt,太小印出来糊成一片。这是常见惯例、按目标期刊须知定。

加显著性标注

分组比较图上那对星号,是最常见也最容易标错的一处。直接说清「比哪几组、用什么检验」:

Ctrl 和 Treat 之间加显著性标注,用 t 检验,显示星号。

它会用标准包把星号标上(ggpubr 底层调 ggsignif):

library(ggpubr)

ggboxplot(df, x = "group", y = "value", color = "group") +
  stat_compare_means(
    comparisons = list(c("Ctrl", "Treat")),
    method = "t.test",              # 两组比较;多组两两比可列多对
    label  = "p.signif"            # 显示星号而非具体 p 值
  )

星号与 p 值的常见对应(是通行惯例,个别期刊略有出入,以目标期刊为准):

标记p 值范围
nsp ≥ 0.05(不显著)
*p < 0.05
**p < 0.01
***p < 0.001

两点别踩:检验方法要和数据匹配——两组正态用 t 检验、不满足正态用 Wilcoxon,多组用方差分析 / Kruskal-Wallis 而不是两两 t 检验反复比。方法怎么选见 统计方法怎么选多组多次比较时记得校正 p 值,否则假阳性会偏高。星号背后是哪种检验、误差棒画什么,展开见 柱状图加显著性星号:规范做法

改到能投稿:导出出版级图

样式满意后,把投稿规格一并说清,让它按期刊要求导出,而不是先导一张随意大小的再缩放:

按单栏 89mm 宽导出矢量 PDF,另出一份 300dpi 的 TIFF,字号不小于 7pt。

对应的标准导出(ggplot2 的 ggsave 最省事):

library(ggplot2)

# 矢量 PDF:宽=单栏 89mm,cairo_pdf 会把字体嵌进文件
ggsave("Figure1.pdf", plot = p,
       width = 89, height = 70, units = "mm", device = cairo_pdf)

# 位图 TIFF:热图、含照片的图等,指定 300dpi + 无损压缩
ggsave("Figure1.tiff", plot = p,
       width = 89, height = 70, units = "mm",
       dpi = 300, compression = "lzw")

选格式的原则:统计图(箱线、柱、火山图、生存曲线)能矢量就矢量(PDF / EPS),放大不糊;像素图(显微、凝胶、切片)才存 TIFF,按 dpi 要求来。 分辨率、栏宽、字号、颜色模式这些硬指标怎么一次设对,见 投稿图片要求:分辨率、格式、字体

拿到图、数据表和可复现代码

每次绘图默认交付三件套,这也是「改得动、复现得了、经得起返修」的底气:

交付物是什么拿它做什么
图形结果出版级图形,矢量 / 高分辨率可选下载放进论文 / 汇报
数据文件作图用的整理后表格核对、复用、做下游
可复现 R 代码复现这张图的脚本写进方法学、复核、再微调

您完全可以只看图;但代码在手,意味着返修时改一个参数就能重出,投稿时也拿得出「这张图怎么来的」——这正是把它放进论文的底气。想再进一步用 Illustrator 精修,导出的矢量图也能直接打开编辑。

在平台上跑一遍

上面整条路,在百沐一下就是「上传一张整洁表 + 说几句话」这么简单——不写代码,说清要什么图,再对着图一句句改配色、字号、显著性,智能绘图 即时重画,最后连出版级图形、数据表和可复现 R 代码一并交付。

👉 打开 https://app.baimuyixia.com,进【数据分析 → 智能绘图】,选好数据、描述想要的图即可开画。

相关