R语言作图的拼接操作(patchwork,基础知识)

本文介绍了R语言库patchwork的基础知识,包括使用+号按行拼图,/按列拼图,以及如何利用plot_layout控制细节和设计复杂的网格布局。同时讲解了如何管理和控制图例,提升作图效率。
摘要由CSDN通过智能技术生成

最近年中总结,我们抽空学习一下简单的基础知识,虽然是基础,但是绝不可小视

我们知道patchwork一出来,就推出+号来拼图,最近又搞出了|/两个操作符。让整个拼图看起来很舒服。
先来画几张图:

library(ggplot2)p1 <- ggplot(mtcars) +  geom_point(aes(mpg, disp)) +  ggtitle('图一')p2 <- ggplot(mtcars) +  geom_boxplot(aes(gear, disp, group = gear)) +  ggtitle('图二')p3 <- ggplot(mtcars) +  geom_point(aes(hp, wt, colour = mpg)) +  ggtitle('图三')p4 <- ggplot(mtcars) +  geom_bar(aes(gear)) +  facet_wrap(~cyl) +  ggtitle('图四')

拼图专用空白

plot_spacer()来填空白,一如既往地用+号来拼:

p1 + plot_spacer() +    p2 + plot_spacer() +    p3 + plot_spacer()

拼图语法

+号大家都知道,按照row来拼,用/,按照column来拼,用|,这个语法绝了!而且一堆+号,在拼图多的时候也很乱,用/|配以()和换行,可读性太强了。

(p2 / p3 ) | p1

控制细节

+/|毕竟是语法糖,要控制细节,全在plot_layout里。

p1 + p2 + p3 + p4 +  plot_layout(widths = c(3, 1))

超越网格

拼图都是把整张图分为网格,往里面填,当你要拼复杂点的时候,那就是嵌套去拼,比如在cowplot里,plot_gridplot_grid,这样你才能够使一张图在网格里占用不止一个格子。但嵌套有时候很难保证对齐。

layout <- "##BBBBAACCDD##CCDD"p1 + p2 + p3 + p4 +  plot_layout(design = layout)

这里#代表空白,ABCD分别对应这四张图,这个layout中ABCD的位置,就对应于图在网络中的位置。

你还可以用area来指定在网络中的位置,这样更加容易编程控制细节:

layout <- c(  area(t = 2, l = 1, b = 5, r = 4),  area(t = 1, l = 3, b = 3, r = 5))p1 + p2 +  plot_layout(design = layout)

当然这些格子的相对高度和宽度,也是可以通过playout_layout中的widthsheights参数控制的。

控制legend

指定guides='collect'可以帮助我们把legend都给集中在一起,放到图的一侧:

g <- ggplot(mtcars) +  geom_point(aes(mpg, disp, colour = mpg, size = wt))g1 <- g + ggtitle("图一")g2 <- g + scale_colour_viridis_c() + ggtitle("图二")(p3 | (g1 / g2)) +   plot_layout(guides = 'collect')

它厉害就厉害在会把所有图的图例都收集,并且会比较,不同的,比如说g1和g2的颜色映射不一样,图例都有,而点大小的图例是一样的,只出来一个。比较图例这个工作,必须服。

如果想要图例单独放在一个格子,用guide_area()

g1 + p2 + p3 +  guide_area() +  plot_layout(guides = 'collect')

很好用,大家多多学习,提升自己的作图水平~~

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值