专注系列化、高质量的R语言教程
推文索引 | 联系小编 | 付费合集
上篇和上篇续介绍了使用操作符进行组图的方法,这里默认读者已经能够理解各种操作符在本篇推文中的使用场景。本篇目录如下:
0 示例图形
6 plot_layout函数(下)
6.1 guides参数
6.2 guide_area函数
6.3 design参数
6.4 area函数
7 plot_annotation函数
7.1 添加标题
7.2 子图编号
8 inset_element函数
0 示例图形
首先,参考官方文档[1],生成如下4个ggplot对象:
library(ggplot2)
p1 <- ggplot(mtcars) +
geom_point(aes(mpg, disp/100, col = hp)) +
ggtitle('Plot 1')
p2 <- ggplot(mtcars) +
geom_point(aes(mpg, wt, col = hp)) +
ggtitle('Plot 2')
p3 <- ggplot(mtcars) +
geom_point(aes(hp, wt, colour = mpg)) +
scale_colour_continuous(low = "white", high = "red") +
ggtitle('Plot 3')
p4 <- ggplot(mtcars) +
geom_bar(aes(gear)) +
facet_wrap(~cyl) +
ggtitle('Plot 4')
6 plot_layout函数(下)
patchwork(上篇)2.2节已经介绍了plot_layout()
函数的部分功能。
通过前面两篇推文的学习,读者大概已经能够理解嵌套水平的概念了。plot_layout()
函数组图布局是针对当前嵌套水平的子图。
library(patchwork)
p1 + p2/p3 + p4 +
plot_layout(nrow = 2, heights = c(2,1)) &
theme_minimal(base_family = "mono")
p2
和p3
处于低一层次的嵌套水平,因此共同占据一个子图位置。
6.1 guides参数
guides
参数用来调整图例,它有三个取值情况,其中guides = "collect"
比较有用,它表示把所有子图的图例集中一起,并删除重复图例。
集中后的图例默认放在整幅图的右侧:
p1 + p2 + p3 + p4 +
plot_layout(nrow = 2, guides = "collect") &
theme_minimal(base_family = "mono")
p1
和p2
的图例相同,集中放置后只保留一个。
使用theme()
函数调整图例位置:
p1 + p2 + p3 + p4 +
plot_layout(nrow = 2, guides = "collect") &
theme_minimal(base_family = "mono") &
theme(legend.position = "left")
6.2 guide_area函数
guide_area()
是一个辅助函数,用来配合guides = "collect"
使用。它可以将集中后的图例视为一个子图,参与组图空间的分配:
p1 + p2 + p3 +
guide_area() + ## 该函数
plot_layout(nrow = 2, guides = "collect") &
theme_minimal(base_family = "mono") &
theme(legend.box = "horizontal")
使用
guide_area()
函数后图例得以和其他子图一样占据单独的位置。