为了账号安全,请及时绑定邮箱和手机立即绑定

R语言之可视化①⑧子图组合patchwork包

标签:
Java

正文

其实前面已经介绍两个子图组合的博客,但是看到这个patchwork包还是眼前一亮,因为它非常简单易懂且功能强大

普通功能

  • 安装

# install.packages("devtools")devtools::install_github("thomasp85/patchwork")
  • 简单实例

library(ggplot2)
library(patchwork)

p1 <- ggplot(mtcars) + geom_point(aes(mpg, disp))
p2 <- ggplot(mtcars) + geom_boxplot(aes(gear, disp, group = gear))

p1 + p2

仅仅靠'+'符号便可以完成子图组合


webp

  • 可以通过添加plot_layout()调用来指定画布的布局。 可以定义网格的尺寸以及分配给不同行和列的空间大小

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

webp

  • 增加图片画布中的空白

p1 + plot_spacer() + p2

webp


-可以通过将部分子图包装在括号中来制作嵌套布局。在这种情况下,画布布局的范围为不同的嵌套级别。

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)

webp

高级功能

除了将图和布局一起添加之外,还定义了一些非常简单的运算符。  '- '功能类似'+',但将左侧和右侧放在相同的嵌套级别(而不是将右侧放入左侧嵌套级别)。

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

webp

webp


我们可以看到现在(p1 + p2)和p3处于同一水平。

  • 通常我们只是想把子图简单组合。 提供了两个| 和/分别用于水平和垂直布局。 它们当然可以组合成一个非常易读的布局语法:

(p1 | p2 | p3) /
      p4

webp

  • 设置子图与图片主题

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

可以使用&或将主题添加到所有子图中,而不是单独修改所有图。 两者的不同之处在于只会影响当前嵌套级别的图,&影像所有子图。

webp


webp



作者:赛乾
链接:https://www.jianshu.com/p/622fff119eb4


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消