本文转载自公众号: EasyCharts
这里要分享的图表版面设计其实就是指,在做了很多图的情况下,如何将诸多图表合理的布局在一张大的版面上,而不是一幅一幅的导出最后在其他软件中手动拼凑。
这个技能在制作多图仪表盘场景下,将会特别有用:
还需要强调下这里所指的一页多图与我们之前介绍过的分面可是大有不同,分面其实是一幅图表中,将分类变量所构成的分类图表分图呈现,但是本质上所有分面内的单个图表共享标题、图例、坐标轴刻度(虽然可以手动定义)。
也就是说分面的图表类型与诸多元素都是一样的,但是分面解决不了不同图表的排版布局问题:比如单独绘制而成的一幅散点图、柱形图和一幅饼图,分面将无能为力。
R语言中可以实现多图同页布局的函数有很多(我所知道的旧有大概四五种),但是有些参数略微复杂不便记忆,这里只跟大家介绍两种:
一种是grid.layout函数(就是我们昨天所讲到的图表嵌套所用到的是同一个包),另一个是rmisc包中的multiplot函数:
grid.layout函数:
require(ggplot2) require(grid)
绘制备用图表(这里必须给图表命名,因为最后制作汇总图的时候需要引用图表名称)
chart1 <- ggplot(mtcars, aes(mpg, wt, colour = factor(cyl))) + geom_point() chart2 <- ggplot(diamonds, aes(carat, depth, colour = color)) + geom_point() chart3<- ggplot(diamonds, aes(carat, depth, colour = color)) + geom_point() + facet_grid(.~color)
以上三个函数定义了三个图表对象,如果想要查看图表则只需给出图表名称然后回车即可:
grid.newpage() ###新建图表版面 pushViewport(viewport(layout = grid.layout(2,2))) ####将版面分成2*2矩阵 vplayout <- function(x,y){viewport(layout.pos.row = x, layout.pos.col = y)}
###定义图表的布局规则,也就是指定画布的行显示图表的X轴,列显示图表的Y轴。
print(chart3, vp = vplayout(1,1:2)) ###将(1,1)和(1,2)的位置画图chart3 print(chart2, vp = vplayout(2,1)) ###将(2,1)的位置画图chart2 print(chart1 , vp = vplayout(2,2)) ###将(2,2)的位置画图chart1
以上函数将逐步按照之前的位置规则按照对应顺序绘制三幅图表,每打印一次你都可以看到画布上增加一个图表。
以上是该方法制作一页多图的全部过程,其实因为里面有自定义函数,看起来稍微有点儿麻烦,不过不影响理解。
multiplot函数:
library("Rmisc") library("plyr")
使用multiplot函数制作一页多图的语法非常简单,过程同样也是先制作出单个图表并命名,然后一句函数就搞定:
multiplot(chart1,chart2,chart3, cols=2)
虽然使用multiplot函数非常方便高效,但是默认情况下,它不会对单个的图表长宽比例做最优布局,我们的案例中,chart3是一个水平分面图,属于矮款型的,但是multiplot函数将它压缩成长宽近似的矩形,放在四象限的第二个位置。
整体看上去,第一种方法虽然过程复杂些,但是局部灵活些,可以调整单个图表所占的空间,第二种方式更加高效、快捷,但是布局上欠缺优化(也许是我还没有接触到内部的局部调整参数,有懂的小伙伴儿麻烦指导一下,不胜感激)!
对了,做完图之后记得使用
dev.off() #
函数关闭活动版面,否则会影响之后的其他不相关图表!
精彩回顾
本文由R语言中文社区 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Bootstrap学习之三:使用排版
- 以 Markdown 撰写文稿,以 LaTeX 排版
- Android9编程七:ConstraintLayout 排版
- 中英文排版规范化 API
- [译]《Smashing》: 用 CSS 形状打造高级排版
- VLOOK V9.23 更新!表格自动排版大更新
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。