欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 旅游 > R语言统计分析——图形的组合

R语言统计分析——图形的组合

2024/10/24 8:20:25 来源:https://blog.csdn.net/maizeman126/article/details/139507892  浏览:    关键词:R语言统计分析——图形的组合

参考资料:R语言实战【第2版】

        在R种使用函数par()或layout()可以容易地组合多幅总括图形。

        我们可以在par()函数中使用图形参数mfrow=c(nrows,ncols)来创建按行填充的行数为nrows、列数为ncols的图形矩阵。另外,可以使用mfcol=c(nrows,ncols)按列填充矩阵。

        mfrow即“multiple figures row-wise”,表示将多个图形以行的方式排列在一个图形设备中。

# 示例1
# 使用系统自带的mtcars数据集
attach(mtcars)# 设置参数opar<-par(no.readonly=TRUE)par(mfrow=c(2,2))plot(wt,mpg,main="Scatterplot of wt vs. mpg")plot(wt,disp,main="Scatterplot of wt vs. disp")hist(wt,main='Histogram of wt')boxplot(wt,main='Boxplot of wt')par(opar)
detach(mtcars)

# 示例2
attach(mtcars)opar<-par(no.readonly=TRUE)par(mfrow=c(3,1))hist(wt)hist(mpg)hist(disp)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()来指定。

        在以下代码中,我们再次将一幅图形置于第1行,两幅图形置于第2行。但第1行中图形的
高度是第2行中图形高度的二分之一。除此之外,右下角图形的宽度是左下角图形宽度的三分
之一:

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(disp)
detach(mtcars)

        如果我们想通过排布或叠加若干图形来创建单幅的、有意义的图形,这需要有对图形布局的精细控制能力。我们可以使用图形参数fig=完成这个任务。如下代码:通过在散点图上添加两幅箱线图,创建了单幅的增强型图形。

opar<-par(no.readonly=TRUE)
# 主区域设置散点图
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=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)

     

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com