利用 cowplot 包快速对齐图片

简介: 利用 cowplot 包快速对齐图片

小编在撰写科研论文时,经常会使用 gridExtra[1] 包中 grid.arrange() 函数将多个图形进行组合展示。

以前基本使用默认几个参数就完事了,最近发现如果图形画布大小不同,组合后的图形会出现不对齐的问题,例如:(竖直方向上不对齐:下图标注的红线),看上去比较凌乱。

library(ggplot2)
library(gridExtra)
df <- data.frame(
  x = 1:10, y1 = 1:10, y2 = (1:10)^2, y3 = (1:10)^3, y4 = (1:10)^4
)
p1 <- ggplot(df, aes(x, y1)) + geom_point()+
  theme_bw()
p2 <- ggplot(df, aes(x, y2)) + geom_point()+
  theme_bw()
p3 <- ggplot(df, aes(x, y3)) + geom_point()+
  theme_bw()
p4 <- ggplot(df, aes(x, y4)) + geom_point()+
  theme_bw()
grid.arrange(p1, p2, p3, p4,nrow=2)

在搜集资料后发现cowplot[2]包能通过简单参数设置来快速对齐图片。小编以前介绍过这个包,可见:cowplot包,ggplot2图形排版R包cowplot包:用R添加水印

接下来看看,它是怎么实现的~

对齐后的图片

cowplot 包中的 plot_grid() 函数可以直接完成子图的对齐和排列。通过设置参数 aligh = 'v' 可以实现竖直方向对齐,aligh = 'h' 可以实现水平方向对齐,aligh = 'hv' 同时在两个方向对齐。

plot_grid(p1, p2, p3, p4, align = 'v')

此时,前面出现的问题基本解决了~接下来看看,其他常用的参数设置。

自动生成子图序号

如果需要给每个子图加上序号,设置参数  labels = "AUTO" 添加大写标签,labels = "auto" 添加小写标签。

plot_grid(p1, p2, p3, p4,align = 'v',labels = 'AUTO') #添加大写标签

调整图片长和宽的比例

修改参数 rel_widthsrel_heights 的值,就可以调整子图的长和宽的比例。例如,在一个两列的复合图中,rel_widths = c(2,1) 将使第一列子图的宽度是第二列的两倍。rel_heights 的工作原理与 rel_widths 相同,但用于行而不是列。

plot_grid(
  p1, p2, p3, p4,
  align = 'hv',
  rel_heights = c(2,1),
  rel_widths = c(1,2)
)

插空排列图形

如果想要插空排列子图,只需要将对应位置的子图设置为 NULL

plot_grid(
  p1, NULL, NULL, p2, p3, NULL,
  ncol = 2,
  align = "v"
)

适用于非 ggplot 生成的图形

对于非 ggplot 生成的图形,plot_grid() 函数也同样适用:

plot_grid(
  p1, NULL, NULL, p2, p3, NULL,
  ncol = 2,
  align = "v"
)

小编有话说

  • 多个图形合并在科研写作中非常常用。一种方式:通过 R 软件进行合并,并标注出对应信息,如本文所说。另一种方式:通过 LaTeX 的多图合并代码展示,如:LaTeX文档多图排版笔记

参考资料

[1]

gridExtra: https://cran.r-project.org/web/packages/gridExtra/index.html

[2]

cowplot: https://cran.r-project.org/web/packages/cowplot/vignettes/introduction.html


目录
相关文章
|
1月前
|
前端开发
css 图标和文字对齐 —— 垂直居中对齐,任意位置对齐
css 图标和文字对齐 —— 垂直居中对齐,任意位置对齐
41 2
|
1月前
|
PHP 数据安全/隐私保护 计算机视觉
ThinkPHP图片处理之压缩图片大小,图片处理之图片水印(添加平铺文字水印,并设置文字之间的间距和文字的角度)
ThinkPHP图片处理之压缩图片大小,图片处理之图片水印(添加平铺文字水印,并设置文字之间的间距和文字的角度)
23 1
文本,vitepress如何插入图片,做背景图片的设计,Typora如何设置存放图片的位置
文本,vitepress如何插入图片,做背景图片的设计,Typora如何设置存放图片的位置
|
3月前
|
数据安全/隐私保护 Python
python 图片打水印 透明图片合并
python 图片打水印 透明图片合并
32 1
|
3月前
图片的缩放源代码与使用
图片的缩放源代码与使用
22 0
|
8月前
|
算法 Python
基于LSB实现文本、图片、压缩包的隐藏
基于LSB实现文本、图片、压缩包的隐藏
157 1
|
前端开发
【前端】CSS实现图片文字对齐 并随着设备尺寸改变而改变大小
【前端】CSS实现图片文字对齐 并随着设备尺寸改变而改变大小
190 0
【前端】CSS实现图片文字对齐 并随着设备尺寸改变而改变大小
【Excel自动化办公Part4】:调整字体与样式的操作——字体、边框、对齐格式、颜色填充
【Excel自动化办公Part4】:调整字体与样式的操作——字体、边框、对齐格式、颜色填充
155 0
【Excel自动化办公Part4】:调整字体与样式的操作——字体、边框、对齐格式、颜色填充
|
文字识别 Python wax
Python 绘图字体控制 + 文字在图片中的位置调整
Python 绘图字体控制 + 文字在图片中的位置调整
1151 0