![]()
点击上方蓝色字关注
▲生信小白君▲
NO8. R数据可视化|图形初阶(下)
![]()
在路上,永远年轻,永远热泪盈眶。
--杰克.凯鲁亚克
2020.11.13
Hi, 朋友!
我是小白君, 很高心遇见你

01
图形的组合
如你所见,本篇文章将是R数据可视化|图形初阶系列最后一篇文章,即图形的组合及其布局的精细调控[1]。
在R中可使用par( )或 layout( )将多幅图形组合为一幅总括图。在par( )函数中可使用图形参数 mfrow=c (nrows,ncols)来创建按行填充的、行数为nrows、列数为ncols 的图形矩阵。mfcol=c(nrows,ncols)来按列填充矩阵。
举例如下,以下代码实现创建四幅图并将它们分布在两行两列中
attach(mtcars)
opar <- par(no.readonly=TRUE)
par(mfrow=c(2,2))#按行填充,2行2列
plot(wt,mpg,main="Scatterplot of wt vs. mpg")
plot(wt,disp,main="Scatterplot of wt vs dish")
hist(wt,main="Histogram of wt")
boxplot(wt,main="Boxplot of wt")
par(opar)
detach(mtcars)
<以上代码可复制粘贴,可往左滑>
运行结果:

layout( )的调用形式为layout(mat),mat是一个矩阵,指定了所要组合的多个图形的所在位置。如下代码展现的是一幅图被置于第1行,另两幅图被置于第2行:
attach(mtcars)
layout(matrix(c(1,1,2,3),2,2,byrow=TRUE))#创建矩阵
hist(wt)
hist(mpg)
hist(disp)
detach(mtcars)
<可往左滑>
运行结果:

在 layout( )函数中可使用 widths= 和 heights= 两个参数来精确的控制每幅图的大小。
其形式为:
widths=各列宽度值组成的一个向量
heights=各行高度值组成的一个向量
相对宽度通过数值指定,而绝对宽度则可通过函数lcm( )来指定。举例如下:
attach(mtcars)
layout(matrix(c(1,1,2,3),2,2,byrow = TRUE),
widths=c(3,1),heights=c(1,2))
hist(wt)
hist(mpg)
hist(dish)
detach(mtcars)
<可往左滑>
运行结果:


02
图形布局的精细控制
图形参数fig=可以实现对图形布局的精细调控,以下代码在散点图上添加两幅箱线图并创建了单幅的增强型图形。
opar <-par(no.readonly=TRUE)
par(fig=c(0,0.8,0,0.8))#设置散点图
plot(mtcars$wt,mtcars$mpg,xlab="Miles Per Gallo",ylab="Car Weight") par(fig=c(0,0.8,0.55,1),new=TRUE)
boxplot(mtcars$wt,horizontal=TRUE,axes=FALSE)#上方添加箱线图 par(fig=c(0.65,1,0,0.8),new=TRUE) boxplot(mtcars$mpg,axes=FALSE) #在右侧添加箱线图 mtext("Enhanced Scatterplot",side=3,outer=TRUE,line=-3) par(opar)
<可往左滑>
如图所示:

References
[1] R in Action Data Analysis and Graphics with R
完结撒花
我是GGabriel Liu,一位三观比五官更正,思想比套路更深的分享者。
2020年11月13日


