大数跨境
0
0

杂志业余编辑:为什么学生不喜欢使用R语言画组合图?

杂志业余编辑:为什么学生不喜欢使用R语言画组合图? 科研代码
2025-12-01
3
导读:拼图的终极R代码!

1 前言

我们组做数据分析的时候,总会有人去找赵老师。他是那种你给他一句需求,他能顺手写出半页 R 代码的狠人。尤其是在科研绘图这块,他对配色、线条、字体、版面都有强迫症级别的追求。

前段时间,他整理了一套“多图自动拼接”的模板代码,能把常见的四张图组合成一个 ABCD 四宫格。结果第二天就听他无奈地说:

“怎么大家还是去 PPT 里拼图?我这套自动化流程是不是白写了?”

学生们其实也不是嫌弃 R,只是大家真的不太喜欢在 R 里面直接拼图。

今天的更新,我就把原因拆开讲讲,同时给你一个真正好用的 R 拼图流程,避免赵老师的代码继续被“浪费”。


2 为什么很多人不喜欢在 R 里拼图?

大家不是不用 R,只是 R 拼图有一些真实存在的“小痛苦”:

  • 语法太多,选哪个都纠结:
    patchwork、cowplot、ggpubr、gridExtra,每个都能拼,但写法完全不同。
  • 拼出来常常不协调:
    字体、配色、边距、轴线粗细一旦不统一,整体就显得“散”。
  • 高分辨率导出麻烦:
    尺寸、dpi、字体比例需要来回试,导一次图就像打一次补丁。
  • 调参数反馈不实时:
    一点点 spacing、margin 都要重新跑代码,很消耗耐心。

3 为什么有些人还是更喜欢 PPT 拼图?

因为 PPT 的体验实在太友好了:

  • 拖一拖,放一放就能组合
  • 字体大小、间距、对齐线都能手动调
  • 不需要记语法
  • 反馈即时,看哪里不顺眼立刻改

这些都是初学者非常依赖的优势。

但 PPT 拼图有一个绝对致命的问题:

导出图片分辨率太低,期刊完全不够用。


4 分享赵老师的解决方案:

下面就是赵老师那套“够用十年”的 R 拼图流程。

4.1 统一主题(统一色系、字体、线条)

library(ggplot2)
library(patchwork)

# Nature 风配色
nature_pal <- c(
  setosa     = "#4C72B0",
  versicolor = "#55A868",
  virginica  = "#C44E52"
)

# 统一主题
theme_set(
  theme_classic(base_size = 14) +
    theme(
      axis.line   = element_line(color = "black"),
      panel.grid  = element_blank(),
      plot.title  = element_text(hjust = 0.5, size = 14),
      axis.text   = element_text(color = "black")
    )
)

4.2 绘制四张子图(A / B / C / D)

# 图 A:箱线图
pA <- ggplot(iris, aes(Species, Sepal.Length, fill = Species)) +
  geom_boxplot(width = 0.6, alpha = 0.8, color = "black") +
  scale_fill_manual(values = nature_pal, guide = "none") +  # 这里保留图例
  labs(x = "", y = "Sepal Length") +
  theme(
    axis.text.x = element_text(angle = 45, hjust = 1)        # X 轴文字倾斜
  )

# 图 B:小提琴图
pB <- ggplot(iris, aes(Species, Petal.Length, fill = Species)) +
  geom_violin(trim = FALSE, alpha = 0.7, color = "black") +
  scale_fill_manual(values = nature_pal, guide = "none") +   # 不显示图例
  labs(x = "", y = "Petal Length") +
  theme(
    axis.text.x = element_text(angle = 45, hjust = 1)        # X 轴文字倾斜
  )

# 图 C:散点图
pC <- ggplot(iris, aes(Sepal.Length, Petal.Length, color = Species)) +
  geom_point(alpha = 0.7, size = 2) +
  scale_color_manual(values = nature_pal, guide = "none") +  # 不显示图例
  labs(x = "Sepal Length", y = "Petal Length")

# 图 D:趋势图
pD <- ggplot(iris, aes(Sepal.Width, Petal.Width, color = Species)) +
  geom_point(alpha = 0.7, size = 2) +
  geom_smooth(method = "lm", se = FALSE, linewidth = 0.8) +
  scale_color_manual(values = nature_pal, name = "Species") +  # 不显示图例
  labs(x = "Sepal Width", y = "Petal Width")

4.3 拼接 ABCD 四宫格 + 自动标签 + 高清导出

combined_figure <- (pA + pB + pC + pD) +
  plot_layout(ncol = 2, nrow = 2) +
  plot_annotation(
    tag_levels = "A",
    theme = theme(
      plot.tag = element_text(
        size  = 16,
        face  = "bold",
        hjust = -0.2,
        vjust = 1
      )
    )
  )

ggsave(
"figure_ABCD_nature_style.png",
  combined_figure,
  width  = 8,
  height = 6,
  dpi    = 300
)

combined_figure

运行这一段,你就能得到一张:

  • 风格统一
  • 标签专业
  • 配色高级
  • 分辨率合格的 Nature 风四宫格大图

5 小结

R 拼图的体验确实不如 PPT 顺手,特别是在便利性上,但是胜在可以和绘图过程无缝衔接,并且没有分辨率太低的缺点。上面这套 ABCD 模板能满足绝大部分文章的需求,感兴趣的朋友欢迎拿去练习!

感谢关注,你的支持是我不懈的动力!

【声明】内容源于网络
0
0
科研代码
专注AI,R语言和Python的实用代码!
内容 505
粉丝 0
科研代码 专注AI,R语言和Python的实用代码!
总阅读163
粉丝0
内容505