- 参考:
- 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制作漂亮的表格]] 中的表格更好看哦:
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/