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)

     

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值