楼主: neo_donald
8637 5

[学习分享] R语言多个图形组合/一个画面画多个图形/layout()/par()/fig= [推广有奖]

  • 0关注
  • 0粉丝

本科生

5%

还不是VIP/贵宾

-

威望
0
论坛币
684 个
通用积分
0.3955
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
450 点
帖子
22
精华
0
在线时间
96 小时
注册时间
2019-4-29
最后登录
2023-5-18

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
在R中使用函数par()或layout()或fig=可以容易地组合多幅图形为一幅总括图形

1.par()
  1. par(mfrow=c(nrows, ncols))或par(nfcol=c(nrows, ncols))
复制代码
你可以在par()函数中使用图形参数mfrow=c(nrows, ncols)来创建按行填充的、行数为nrows、列数为ncols的图形矩阵。另外,可以使用nfcol=c(nrows, ncols)按列填充矩阵。
  举例来说,以下代码创建了四幅图形并将其排布在两行两列中:
  1. setwd("D:/STUDY/Routput")  # 设置工作目录
  2. bmp(file="combininggraphs.bmp")
  3. attach(mtcars)
  4. opar <- par(no.readonly = TRUE)
  5. par(mfrow = c(2, 2))
  6. plot(wt, mpg, main = "Scatterplot of wt vs. mpg")
  7. plot(wt, disp, main = "Scatterplot of wt vs disp")
  8. hist(wt, main = "Histogram of wt")
  9. boxplot(wt, main = "Boxplot of wt")
  10. par(opar)
  11. detach(mtcars)
  12. dev.off()
复制代码
(备注:本人编程习惯,由于Rstudio plot窗口输出图形很不方便,所以图形一律输出至本地,读者可以将图形输出部分删除)结果如图:
1.PNG
作为第二个示例,让我们依3行1列排布3幅图形。代码如下:  
  1. setwd("D:/STUDY/Routput")  # 设置工作目录
  2. bmp(file="fig3.15.bmp")
  3. attach(mtcars)
  4. opar <- par(no.readonly = TRUE)
  5. par(mfrow = c(3, 1))
  6. hist(wt)
  7. hist(mpg)
  8. hist(disp)
  9. par(opar)
  10. detach(mtcars)
  11. dev.off()
复制代码
结果如下: 2.PNG
2.函数layout()
  layout(mat, widths = rep.int(1, ncol(mat)),heights = rep.int(1, nrow(mat)), respect = FALSE)
函数layout()的调用形式为layout(mat),其中的mat是一个矩阵,它指定了所要组合的多个图形的所在位置。在以下代码中,一幅图被置于第1行,另两幅图则被置于第2行:
  1. setwd("D:/STUDY/Routput")  # 设置工作目录
  2. bmp(file="fig3.16.bmp")
  3. attach(mtcars)
  4. layout(matrix(c(1, 1, 2, 3), 2, 2, byrow = TRUE))
  5. hist(wt)
  6. hist(mpg)
  7. hist(disp)
  8. detach(mtcars)
  9. dev.off()
复制代码
结果如下:
3.PNG

为了更精确地控制每幅图形的大小,可以有选择地在layout()函数中使用widths=和heights=两个参数。其形式为:
widths = 各列宽度值组成的一个向量
heights = 各行高度值组成的一个向量
  1. # Figure 3.17 更精确地控制每幅图形的大小
  2. setwd("D:/STUDY/Routput")  # 设置工作目录
  3. bmp(file="fig3.17.bmp")
  4. attach(mtcars)
  5. layout(matrix(c(1, 1, 2, 3), 2, 2, byrow = TRUE),
  6.        widths = c(3, 1), heights = c(1, 2))
  7. hist(wt)
  8. hist(mpg)
  9. hist(disp)
  10. detach(mtcars)
  11. dev.off()
复制代码
结果如图:第1行中图形的高度是第2行中图形高度的三分之一。除此之外,右下角图形的宽度是左下角图形宽度的四分之一
4.PNG
  如果想要了解layout()更多信息,请查询help(layout)
3.fig=
  1. par(fig=c(x1,x2,y1,y2),new=TRUE)
复制代码

多幅图形布局的精细控制-图形参数fig=以下代码通过在散点图上添加两幅箱线图,创建了单幅的增强型图形
  1. # 多幅图形布局的精细控制-图形参数fig=

  2. setwd("D:/STUDY/Routput")  # 设置工作目录
  3. bmp(file="fig3.18.bmp")
  4. opar <- par(no.readonly = TRUE)
  5. par(fig = c(0, 0.8, 0, 0.8))
  6. plot(mtcars$wt, mtcars$mpg, xlab = "Miles Per Gallon",
  7.      ylab = "Car Weight")
  8. par(fig = c(0, 0.8, 0.55, 1), new = TRUE)
  9. boxplot(mtcars$wt, horizontal = TRUE, axes = FALSE)
  10. par(fig = c(0.65, 1, 0, 0.8), new = TRUE)
  11. boxplot(mtcars$mpg, axes = FALSE)
  12. mtext("Enhanced Scatterplot", side = 3, outer = TRUE,
  13.       line = -3)
  14. par(opar)
  15. dev.off()
  16. # 你需要不断尝试找到合适的位置参数
复制代码
5.PNG
小白学习R,希望能帮上大家

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Layout R语言 Out Lay You

fig3.18.bmp (226.05 KB)

fig3.18.bmp

fig3.17.bmp (226.05 KB)

fig3.17.bmp

fig3.16.bmp (226.05 KB)

fig3.16.bmp

fig3.15.bmp (226.05 KB)

fig3.15.bmp

combininggraphs.bmp (226.05 KB)

combininggraphs.bmp

沙发
neo_donald 发表于 2020-7-11 17:22:22 |只看作者 |坛友微信交流群
电脑浏览器不显示bmp图片,但是手机打开没问题,不知道大家打开会不会这样

使用道具

藤椅
llb_321 在职认证  发表于 2020-7-11 17:51:26 |只看作者 |坛友微信交流群
建议啊,用cairo包,图形设备用pdf,文件小,矢量图形,输出效果有保证。bmp格式分辨率无法保证。

使用道具

板凳
neo_donald 发表于 2020-7-11 18:28:02 |只看作者 |坛友微信交流群
llb_321 发表于 2020-7-11 17:51
建议啊,用cairo包,图形设备用pdf,文件小,矢量图形,输出效果有保证。bmp格式分辨率无法保证。
谢谢你的建议,我最开始就是输出Pdf,但是pdf不好在帖子里直接展示结果,所以就改成了bmp。难道用截图吗?

使用道具

报纸
llb_321 在职认证  发表于 2020-7-11 22:08:32 |只看作者 |坛友微信交流群
很多同学用r画图主要是统计相关的论文应用,论文对图片要求很高,pdf最适合。
如果是统计相关的会议文件,很多可以论文改改代码直接生成beamer,比作ppt还方便,这时pdf的优势就更加明显了。
至于在网页上展示,确实大多数网页是不支持pdf的,经管这里也不支持。
如果既要保证图片dpi,又要文件小一些,可以采用png。
最没有优势的就是jpg和bmp。
看应用场景吧,各取所需。

使用道具

地板
neo_donald 发表于 2020-7-12 10:04:32 |只看作者 |坛友微信交流群
llb_321 发表于 2020-7-11 22:08
很多同学用r画图主要是统计相关的论文应用,论文对图片要求很高,pdf最适合。
如果是统计相关的会议文件, ...
非常感谢你的建议,提供了宝贵的信息。

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 14:21