patchwork:组合图像最便捷的方法

patchwork:组合图像最便捷的方法

ggplot2对象的组合是一件相当让人头疼的事情,但是patchwork包把这件事情变得惊奇的简单。本文是学习thomasp85/patchwork的笔记。

首先,因为对theme_bw()主题已经失去了兴趣,我现在把自己的默认绘图主题修改成了theme_ipsum()主题,这可以通过修改.Rprofile文件来实现,现在我的.Rprofile文件的内容为:

1
2
3
4
5
6
7
8
9
10
11
12
# 把日期环境设置成英文:
Sys.setlocale("LC_TIME", "en_US.UTF-8")
print("已把日期环境设置成英文!")
# 加载包
library(ggplot2, quietly = T)
library(dplyr, quietly = T)
library(RColorBrewer, quietly = T)
library(hrbrthemes, quietly = T)
library(reshape2, quietly = T)
print("已加载ggplot2、reshape2、hrbrthemes、dplyr和RColorBrewer!")
theme_set(theme_ipsum(base_family = 'STSongti-SC-Bold'))
print("已ggplot2绘图主题为theme_ipsum()!")

具体可以参考这篇博客:R和Stata中的环境变量与启动项

回到正题上:

首先是安装:

1
devtools::install_github("thomasp85/patchwork")

合并两幅图直接将两个ggplot对象相加即可:

1
2
3
4
5
6
7
8
library(patchwork)

p1 <- ggplot(mtcars) +
geom_point(aes(mpg, disp))
p2 <- ggplot(mtcars) +
geom_boxplot(aes(gear, disp, group = gear))
# 合并两幅图
p1 + p2

当然也可以直接相加:

1
2
3
4
ggplot(mtcars) +
geom_point(aes(mpg, disp)) +
ggplot(mtcars) +
geom_boxplot(aes(gear, disp, group = gear))

设定拼接比例:

1
p1 + p2 + plot_layout(ncol = 1, heights = c(3, 1))

在拼图时使用空绘图对象:

1
p1 + plot_spacer() + p2

嵌套组合:

1
2
3
4
5
6
7
8
9
10
11
12
13
p3 <- ggplot(mtcars) + 
geom_smooth(aes(disp, qsec))
p4 <- ggplot(mtcars) +
geom_bar(aes(carb))

p4 + {
p1 + {
p2 +
p3 +
plot_layout(ncol = 1)
}
} +
plot_layout(ncol = 1)

高级用法:

1
p1 + p2 + p3 + plot_layout(ncol = 1)

1
p1 + p2 - p3 + plot_layout(ncol = 1)

1
2
(p1 | p2 | p3) /
p4

改变绘图主题:

*仅影响当前嵌套级别的图:

1
(p1 + (p2 + p3) + p4 + plot_layout(ncol = 1)) * theme_bw()

& 影响所有嵌套级别的图:

1
(p1 + (p2 + p3) + p4 + plot_layout(ncol = 1)) & theme_bw()

# R

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×