R语言统计与绘图:给组合图形添加ABCD小标签

2021-02-22 14:41:48 浏览数 (2)

前面我们学习了ggplot2中组合图形的绘制,在科研论文中,组合图形每张子图通常需要加上ABCD等标签,如下图所示。

这种ABCD标签既可以在PS或者AI中添加,也可以在R中直接添加。

今天我们来学习组合图形中怎么添加ABCD标签。

组合图形的标签添加可以使用ggpubr包的ggarrange()函数或annotate_figure()函数。

1. 安装和加载包

代码语言:javascript复制
install.packages("ggpubr") # 安装包
install.packages("ggplot2") # 安装包
library(ggpubr) # 加载包
library(ggplot2) # 加载包

2. 绘制图形

先绘制好需要的图形,在这里为求方便,我每张小图都是一样的。

代码语言:javascript复制
p1 <- ggplot(mtcars, aes(x=mpg, y=wt))   geom_point()
p2 <- ggplot(mtcars, aes(x=mpg, y=wt))   geom_point()
p3 <- ggplot(mtcars, aes(x=mpg, y=wt))   geom_point()
p4 <- ggplot(mtcars, aes(x=mpg, y=wt))   geom_point()

3. ggarrange()函数添加标签

在ggarrange()函数中,使用labels参数给每张小图添加标签。

大多数论文都是将标签放在左上角。

代码语言:javascript复制
ggarrange(p1, p2, p3, p4, ncol = 2, nrow = 2,
          labels = c("A","B","C","D"), # 添加标签
          font.label = list(size = 14, face = "bold")) # 设置标签字体样式

如有需要,可以设置label.x、label.y的数值来调整标签位置。

代码语言:javascript复制
ggarrange(p1, p2, p3, p4, ncol = 2, nrow = 2,
          labels = c("A","B","C","D"), # 添加标签
          label.x = 0, label.y = 0.1, # 调整标签位置
          font.label = list(size = 14, face = "bold")) # 设置标签字体样式

4. annotate_figure()函数添加标签

除了添加ABCD标签外,还可以使用annotate_figure()函数添加更复杂的注释。

代码语言:javascript复制
figure <- ggarrange(p1, p2, p3, p4, ncol = 2, nrow = 2)
annotate_figure(figure,
                top = text_grob("给组合图形添加标签", color = "red", face = "bold", size = 14),
                bottom = text_grob("公众号: R语言统计与绘图", color = "black",
                                   hjust = 1, x = 1, face = "italic", size = 10),
                left = text_grob("使用ggpubr组合图片", color = "red", rot = 90),
                fig.lab = "Figure 1", fig.lab.face = "bold")

5. ggarrange()函数

代码语言:javascript复制
ggarrange(..., plotlist = NULL, ncol = NULL, nrow = NULL,
  labels = NULL, label.x = 0, label.y = 1,
  hjust = -0.5, vjust = 1.5,
  font.label = list(size = 14, color = "black", face = "bold", family = NULL),
  align = c("none", "h", "v", "hv"), widths = 1, heights = 1,
  legend = NULL, common.legend = FALSE, legend.grob = NULL)

## 部分参数解释
... # 要组图的ggplot2对象列表
plotlist # 要显示的绘图列表
ncol、nrow # 图形组合的列数和行数
labels # 要添加到图形中的标签列表,可以设置lable="AUTO"或"auto"自动生成大写标签或小写标签
label.x、label.y # 相对于子图,图标签x、y位置的值或向量,x默认为0,y默认为1,也就是左上角;
hjust、vjust # 调整每个标签的水平或垂直位置,单个值应用于所有标签,值向量应用于每个标签。
font.label # 自定义标签的参数列表,允许值为size、face、color和family. 
# 用法:font.label = list(size = 14, face = "bold", color ="red").
align # 子图的对齐方式,有"h"(水平对齐)、"v"(垂直对齐)、"none"(默认)、"hv"(双向对齐)。
widths # 相对列宽度的数值向量;如widths = c(2, 1)表示第1列宽度是第2列宽度的两倍
heights # 同上
legend # 指定图例位置的字符;允许值为"top", "bottom", "left", "right", "none"。
# legend = "none"表示移除图例
common.legend # 逻辑词,是否子图使用同一图例。

6. annotate_figure()函数

代码语言:javascript复制
annotate_figure(p, top = NULL, bottom = NULL, left = NULL, right = NULL,
  fig.lab = NULL, fig.lab.pos = c("top.left", "top", "top.right", "bottom.left", "bottom","bottom.right"),
  fig.lab.size, fig.lab.face)
  
## 部分参数解释
p # ggplot2对象
top、bottom、left、right # 标签放置位置
fig.lab # 标签文本
fig.lab.pos #标签文本位置
fig.lab.size # 标签文本大小
fig.lab.face # 标签文本样式;有"plain", "bold", "italic", "bold.italic".
参考资料
  1. R数据可视化手册。
  2. annotate_figure()函数帮助文件;
  3. ggarrange()函数帮助文件。

0 人点赞