2019-01-15浏览量:273

就靠layout函数,一张图可展示多个图表!

嘿,一张图中展示多个图表,要怎么弄哩?

试试R语言的layout()函数吧!

请听我慢慢道来

有时候我们需要在一张图中展示多个图表,在R语言中我们可以通过layout()函数分割画布来实现这一功能。

我们一起来看下如何通过layout()来分割画布吧!

layout()的一般格式为layout(mat)或layout(mat,widths,heights)

mat:矩阵对象,用于划分窗口。矩阵中的每个值必须是0或者连续的正整数。例如1,2,3,……N。绘图时按照矩阵中的非0元素的数字顺序作图。

widths:宽度,设置列的宽度

heights :高度,设置行的高度

layout()函数通过矩阵来划分窗口

例如:

layout(matrix(c(1,2,3),byrow=TRUE))

layout.show(3)  #通过layout.show(n)查看窗口。

此时的矩阵为:

通过layout.show(n)查看窗口,我们可以看到如图1的窗口划分,与矩阵分布对应。

图1

接下来只要作图就可以了,绘图时会自动按照窗口数字的顺序作图,结果如图2。

plot(1:10, main="plot 1")

plot(1:10, main="plot 2")

plot(1:10, main="plot 3")

图2

layout函数中矩阵中的数字如果有0,那么该区域是不作图的。

例如:

layout(matrix(c(1,1,0,2),2,2,byrow =TRUE))

layout.show(2)

 

此时的矩阵为:

窗口如图3所示:

图3

plot(1:10,main="plot 1")

plot(1:10,main="plot 2")

作图后得到下图4的结果。

图4

如果想要调整窗口的宽和高,可以调整矩阵的数字分布,数字相同的为同一块。

nf<-layout(matrix(c(2,2,0,1,1,3,1,1,3),3,3,byrow=TRUE))

layout.show(nf)

我们可以看到此时的矩阵为

layout分割的窗口如图5所示:

图5

也可以通过weight和hight设置各个窗口的宽高layout(mat,widths,heights)

nf<-layout(matrix(c(2,0,1,3),2,2,byrow=TRUE),widths=c(2,1),heights=c(1,2))

layout.show(nf)  #widths=c(2,1)设置列的宽度为2和1;heights=c(1,2)设置行的高度为1和2

得到的效果是一样的(图6)。

图6

再作图,就能得到我们想要的分布了!

plot(1:10,main="plot 1")

plot(1:10,main="plot 2")

plot(1:10,main="plot 3")

图7

步骤详细,一学就会

小锐课堂,乐于分享

更多好货,改日继续


下一篇