利用 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


目录
相关文章
pillow 压缩和放大图片 改变图片的像素
pillow 压缩和放大图片 改变图片的像素
|
8月前
|
数据安全/隐私保护 Python
python 图片打水印 透明图片合并
python 图片打水印 透明图片合并
61 1
|
8月前
图片的缩放源代码与使用
图片的缩放源代码与使用
41 0
|
8月前
|
机器学习/深度学习 搜索推荐 计算机视觉
字节推出DreamTuner:只需提供一张图片,就能帮你生成与该图片主题风格一致的新图像
【2月更文挑战第17天】字节推出DreamTuner:只需提供一张图片,就能帮你生成与该图片主题风格一致的新图像
187 2
字节推出DreamTuner:只需提供一张图片,就能帮你生成与该图片主题风格一致的新图像
|
人工智能 文字识别 API
20行代码教你如何批量提取图片中文字
大家好,我是志斌~ 之前志斌在考研的时候遇到了一个问题,就是要将图片中的文字给提取出来,当时是J哥帮忙搞出来的,现在已经考完研了,也学会了提取方式,现在来给大家分享一下。
880 0
20行代码教你如何批量提取图片中文字
|
PHP
PHP图片文字合成居中
PHP使用GD库创建和处理包括GIF,PNG,jpef,wbmp以及xpm在内的多种格式的图像。 以下教程:图片合成文字,实现合成文字水平、垂直居中。
246 0
PHP图片文字合成居中
|
Java
全网首发:JDK绘制文字:六、字符对应的字体图像加载流程
全网首发:JDK绘制文字:六、字符对应的字体图像加载流程
107 0
|
API Android开发
【Android 内存优化】自定义组件长图组件 ( 获取图像宽高 | 计算解码区域 | 设置图像解码属性 复用 像素格式 | 图像绘制 )
【Android 内存优化】自定义组件长图组件 ( 获取图像宽高 | 计算解码区域 | 设置图像解码属性 复用 像素格式 | 图像绘制 )
179 0
【Android 内存优化】自定义组件长图组件 ( 获取图像宽高 | 计算解码区域 | 设置图像解码属性 复用 像素格式 | 图像绘制 )
|
iOS开发
iOS 去除 TabBarItem的图片默认颜色
iOS 去除 TabBarItem的图片默认颜色
161 0
没有图片增加默认图片,有图片路径,但是没有图片文件解决方案
没有图片增加默认图片,有图片路径,但是没有图片文件解决方案
171 0

热门文章

最新文章