前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >97-R可视化26-底层绘图系统grid学习之拓展包gridExtra

97-R可视化26-底层绘图系统grid学习之拓展包gridExtra

作者头像
北野茶缸子
发布2022-04-05 15:07:19
6570
发布2022-04-05 15:07:19
举报
  • 参考:
    • 4.5 The grid Package | Mastering Software Development in R (bookdown.org)[1]
    • R实战:grid包 - 悦光阴 - 博客园 (cnblogs.com)[2]
    • (11条消息) R语言grid包使用笔记——viewport_数据之美-CSDN博客_r语言grid包[3]
    • 书本《R 绘图系统》

前言

我们接着来唠唠R 的grid 绘图。gridExtra包人如其名,拓展包,自然就是要拓展的。

1-拼图

之前我们说过,ggplot 和base 都有自己的拼图方案:[[88-R可视化20-R的几种基于ggplot的拼图解决方案]]。

而在[[96-R可视化25-底层绘图系统grid学习之viewports]] 中,我们也说过,可以通过调整不同的viewport,实现同一大画布下,整合多个不同的grid 元素。亦或你也可以直接利用整体坐标来分配grob 对象,只是这样自然会有些麻烦。

gridExtra 拓展就比较方便了,可以自动的调配区域:

代码语言:javascript
复制
grid.arrange(linesGrob(), circleGrob(),
             roundrectGrob(), segmentsGrob(), 
             ncol = 2)

不过需要注意的是,grid.arrange函数在调用的时候会重新开启一个新的画布。

因为ggplot2 其实就是grob 对象的ggplotGrob 组合,所以对于ggplot 对象,也是同样适用的。

2-设置拼图布局

如果你还记得[[88-R可视化20-R的几种基于ggplot的拼图解决方案]] 的话,其中提到了design 参数:

代码语言:javascript
复制
design <- "
  122
  1#3
  443
"
p1 + p2 + p3 + p4 

类似的,在grid.arrange 里,你可以通过参数layout_matrix 进行调配:

代码语言:javascript
复制
grid.arrange(rectGrob(), circleGrob(),
             roundrectGrob(), textGrob(label = "good"), 
             layout_matrix = matrix(c(1,1,NA,2,3,3,4,NA),
             ncol = 4, byrow = T))
    
> matrix(c(1,1,NA,2,3,3,4,NA),
+        ncol = 4, byrow = T)
     [,1] [,2] [,3] [,4]
[1,]    1    1   NA    2
[2,]    3    3    4   NA

这个matrix 内容,即对应了图中的位置:

以及通过tableGrob()画表格,其实[[43-R可视化01-gt包让R制作漂亮的表格]] 中的表格更好看哦:

代码语言:javascript
复制
iris_plot <- ggplot(iris, aes(x = Sepal.Length, 
                              y = Sepal.Width, color = Species)) + 
  geom_point()
iris_table <- iris %>%
  group_by(Species) %>%
  dplyr::summarize(`Average Sepal.Length` = round(mean(Sepal.Length), 1),
                   `Average Sepal.Width` = round(mean(Sepal.Width), 1)) %>%
  tableGrob()

grid.draw(ggplotGrob(iris_plot))
wc_table_vp <- viewport(x = 0.22, y = 0.85, 
                        just = c("left", "top"),
                        height = 0.1, width = 0.2)
pushViewport(wc_table_vp)
grid.draw(iris_table)
popViewport()

3-详细介绍

可以参考:Index of /web/packages/gridExtra/vignettes (r-project.org)[4]

里面有几个函数的较为详细的用法介绍:

参考资料

[1]

4.5 The grid Package | Mastering Software Development in R (bookdown.org): https://bookdown.org/rdpeng/RProgDA/the-grid-package.html#overview-of-grid-graphics

[2]

R实战:grid包 - 悦光阴 - 博客园 (cnblogs.com): https://www.cnblogs.com/ljhdo/p/4874785.html

[3]

(11条消息) R语言grid包使用笔记——viewport_数据之美-CSDN博客_r语言grid包: https://blog.csdn.net/vivihe0/article/details/47188329

[4]

Index of /web/packages/gridExtra/vignettes (r-project.org): https://cran.r-project.org/web/packages/gridExtra/vignettes/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-02-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 北野茶缸子 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 1-拼图
  • 2-设置拼图布局
  • 3-详细介绍
    • 参考资料
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档