R绘图第三篇:布局(gridExtra)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
R绘图第三篇:布局(gridExtra)
在绘图时,有时候会遇到这样⼀种情景,客户想把多个代表不同KPI的图形分布到同⼀个画布(Page)上,⽽且每⼀个图形都是单独绘制的。
对于这种需求,可以使⽤gridExtra包来实现,gridExtra包能把图形逐个地添加到画布中,并按照业务的需求,把图形摆放到合适的位置上去。
在布局完成之后,把图形绘制出来。
也就是说,gridExtra⽤于把⼏张图拼成⼀组图,可以把ggplot2绘制的多张图形组合到⼀个⼤图中。
通常情况下,gridExtra包常⽤于控制图形的复杂布局和绘制⽂本表,本⽂简单介绍gridExtra包的布局功能。
⼀,友好函数
gridExtra提供⽤于布局的友好函数:
arrangeGrob(..., grobs = list(...), layout_matrix, vp = NULL,
name = "arrange", as.table = TRUE, respect = FALSE, clip = "off",
nrow = NULL, ncol = NULL, widths = NULL, heights = NULL, top = NULL,
bottom = NULL, left = NULL, right = NULL, padding = unit(0.5, "line"))
grid.arrange(..., newpage = TRUE)
这两个函数的区别是:arrangeGrob()返回未绘制的grob,⽽grid.arrange()函数在当前的设备上绘图图形。
参数注释:
...:grobs、ggplot、lattice等grob(图形对象)
grobs:对象对象的list
layout_matrix:表⽰布局的矩阵
gridExtra是grid包的友好版本,在grid包中,grob是⼀个可编辑的绘图对象,grob是graphical object两个单词的前两个字符的组合。
常⽤于表⽰ggplot对象,lattice等⾼级图形系统创建图形对象。
⼆,gridExtra布局的基本⽤法
grid.arrange()函数,不仅能够控制个数已知的图形布局,还能对控制未知个数的图形布局,功能⼗分强⼤。
1,控制多个grob的布局
把ggplot2和lattice绘制的图形对象,分两列,并排显⽰:
library(gridExtra)
library(ggplot2)
library(lattice)
p <- qplot(1,1)
p2 <- xyplot(1~1) ##lattice包
grid.arrange(p,p2,ncol = 2)
2,控制grob列表的布局
把绘图对象添加到列表中,并把该列表传递给grid.arrange()函数的grobs参数:
library(gridExtra)
library(ggplot2)
library(lattice)
gs <- list(NULL)
gs[[1]] <- qplot(1,1)
gs[[2]] <- xyplot(1~1) ##lattice包
grid.arrange(grobs=gs,ncol = 2)
3,使⽤矩阵设置复杂布局
各个图形对象排放的位置,可以通过布局矩阵(layout_matrix)来控制:
lay <- rbind(c(1,1,1,2,3),
c(1,1,1,4,5),
c(6,7,8,9,9))
grid.arrange(grobs = gs,layout_matrix = lay)
三,在图形内部绘图
ggplot2包中有⼀个⽤于创建grob对象的函数,参数x是⼀个ggplot对象:
ggplotGrob(x)
我们可以通过添加注释(annotate)的⽅式,向⼀个图形内部添加⼀个图形:annotation_custom(grob, xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = Inf)
例如:向⼤图形中添加⼀个⼩图形:
library(gridExtra)
library(ggplot2)
g <- ggplotGrob(qplot(1, 1) +
theme(plot.background = element_rect(colour = "black")))
qplot(1:10, 1:10) +
annotation_custom(
grob = g,
xmin = 1, xmax = 5, ymin = 5, ymax = 10
)
参考⽂档:。