嘿,一张图中展示多个图表,要怎么弄哩?
试试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
步骤详细,一学就会
小锐课堂,乐于分享
更多好货,改日继续