博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
R绘图 第三篇:布局(gridExtra)
阅读量:6957 次
发布时间:2019-06-27

本文共 1912 字,大约阅读时间需要 6 分钟。

在绘图时,有时候会遇到这样一种情景,客户想把多个代表不同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  )

 

参考文档:

转载地址:http://tbmil.baihongyu.com/

你可能感兴趣的文章
微信video标签全屏无法退出bug
查看>>
[转]PostgreSQL 中文资料汇总
查看>>
那些被疯狂追求的女孩,后来怎么样了?
查看>>
(转载)Windows 7 Ultimate(旗舰版)SP1 32/64位官方原版下载(2011年5月12日更新版)...
查看>>
孟岩:通证(token)和通证经济的目的在于改善现有经济的效率性
查看>>
杜鹃演绎奢华春装大片
查看>>
mongoDb
查看>>
HTML框架1
查看>>
servlet:启动的时机
查看>>
笔记:2016-06-23
查看>>
5.22心得
查看>>
2017年11月27日高级软件测试技术例会记录
查看>>
最终增强
查看>>
C++ STL(1)
查看>>
socket编程
查看>>
浏览器渲染原理解析
查看>>
搭建个人网站需要的三个步骤
查看>>
matlab建立双坐标
查看>>
Linux操作命令(六)
查看>>
1、压滤机工作原理
查看>>