ggplot2的组图拓展包(1):patchwork(中篇)


专注系列化高质量的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")
682c26fff9f856d8b73ed998fb7dbce1.png
  • p2p3处于低一层次的嵌套水平,因此共同占据一个子图位置。

6.1 guides参数

guides参数用来调整图例,它有三个取值情况,其中guides = "collect"比较有用,它表示把所有子图的图例集中一起,并删除重复图例。

集中后的图例默认放在整幅图的右侧:

p1 + p2 + p3 + p4 +
  plot_layout(nrow = 2, guides = "collect") &
  theme_minimal(base_family = "mono")
f883016e4559b10b0e34c2335bf2ad00.png
  • p1p2的图例相同,集中放置后只保留一个。

使用theme()函数调整图例位置:

p1 + p2 + p3 + p4 +
  plot_layout(nrow = 2, guides = "collect") &
  theme_minimal(base_family = "mono") &
  theme(legend.position = "left")
46654b2d37b90007c4d1ebcbb6fa521a.png

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")
1fce9acb1f38f846f8cbef4c2b11fa65.png
  • 使用guide_area()函数后图例得以和其他子图一样占据单独的位置。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值