对于不同的图形的基本组合,我们可以通过mfrow= c(nrows,ncols)来创建按行填充的图形矩阵,同时 我们也可以通过mfcols = c(nrows,ncols)来创建按列填充的图形矩阵。
> attach(mtcars)
> opar < par (no.readonly = T)
> par(mfrow = c(3,1))
> hist(wt)
> hist(mpg)
> hist(disp)
> par(opar)
> detach(mtcars)
可创建一个按3行1列填充的矩阵图形,如下图所示。
对于hist图,我们可以通过main = “” 或者ann = FALSE来禁用它的标注。
同样我们通过plot()相关参数,将其设置为mfrow = c(2,2)可以设定一个两行两列按行排列的矩阵图形。
我们同样也可以使用layout()行数在其中添加矩阵来进行相关的排列,它的排列方式会更加自由并且可以通过矩阵设置来设置它各行各列的长宽。
比如下例:
> attach(mtcars)
> layout(matrix(c(1,1,2,3),2,2,byrow = T))
> hist(wt)
> hist(mpg)
> hist(disp)
> detach(mtcars)
使用矩阵c(1,1,2,3)byrow = T 即可排列如上图所示的图形组合。
对于layout的矩阵排列,摘抄论坛上一些大神的解释如下:
第一种排列:
layout(matrix(c(1,2,3,4)))
layout.show(4)
系统默认按行分类,一共有,运行图形排列为:
1
2
3
4
第二种排列:
layout(matrix(c(1,2,3,4),2,2))
layout.show(4)
运行图形排列为:
1 2
3 4
等价于par(mfrow=c(2,2))
第三种:
layout(matrix(c(1,1,1,2,3,4,2,3,4),nr=3,byrow=T))#按行
layout.show(4)
运行结果为:
1 1 1
2 3 4
2 3 4
在这里解释一下:
layout函数默认是按行排列的,其中nr=3意思是分为3列,byrow是按行分裂
所以layout函数可以画出任何你想要的图形排列,只需输入排列矩阵。
widths = 各列的宽度组成的向量。
heights = 各行的高度组成的向量。
> attach(mtcars)
> layout(matrix(c(1,1,2,3),2,2,byrow = T),widths = c(3,1), heights = c(1,2))
> hist(wt)
> hist(mpg)
> hist(disp)
> detach(mtcars)
matrix 设置了c(1,1,2,3),2,2,byrow =T ,表示设置的图形矩阵为
1 1
2 3
按照行排列,设置完矩阵后,设置它的列宽为第一列3,第二列1,行的高度为第一行1,第二行2,所以得出的图形如下所示:
opar <- par (no.readonly = T)
> par(fig = c(0,0.8,0,0.8))
> plot (mtcars$wt, mtcars$mpg , xlab = "Miles Per gallon", ylab = "Car weight")
> par(fig = c(0,0.8,0.55,1),new =T)
> boxplot(mtcars$wt,horizontal = T, axes = FALSE)
> par (fig = c (0.65,1,0,0.8),new =T)
> boxplot(mtcars$mpg, axes = FALSE)
> mtext("Enhanced Scatterplot",side =3,outer = TRUE, line = -3)
> par(opar)
第一步先作一个散点图,使用fig设置散点图的基本变量。 fig = c(x1,x2,y1,y2) 表示图形的 x1代表起点, x2 代表终点。 y1 、y2 同理。 设置的散点图为 横向范围0~ 0.8, 纵向范围0 ~0.8。
然后使用par函数设置新的变量,fig = c(0,0.8,0.55,1) 即可设置第一个箱线图的横向和纵向。
然后再使用par函数设置即可得到它的另一个箱线图。
补充箱线图知识 :