R绘图边界如何控制
事实上,R绘图区域(如上图),主要分为两部分:
一是外围边距(out margin area);
二是绘图区域,绘图区域又细分为两个部分:绘图边距(margins)和主绘图(main plot area)。
外围边距可使用par()函数中的oma来进行设置。oma即out margin area,例如oma=c(5,4,3,2),这里指外围边距分别为下边距:5行,左边距4行,上边距3行,右边距2行,这里的行是指可以显示1行普通字体。注意,oma()设置顺序是从bottom开始,按照bottom,left,top,right方向设置,也就是从bottom开始按照顺时针方向设置。
绘图边距(margins)可以使用par()函数中mar来设置。比如mar=c(5,4,3,2),与外围边距的设置类似,是指绘图边距分别为下边距:5行,左边距4行,上边距3行,右边距2行。参数设置顺序与oma()顺序一直,也是从bottom开始顺时针方向设置。
R中边距大小一般有两个单位:“行”和“英寸”,上述两个参数的单位都是行边距,所以与之对应的就有英寸边距的参数。omi和oma,同样可以设置外边距,二者唯一的区别就是单位不同,omi单位是inch,而oma单位是行;同样,mai与mar均可以设置绘图边距,mai单位是inch,而mar单位是行。具体使用哪个参数,根据大家的习惯而来,像小编就习惯使用mar()和oma()。
说了这么多,可能各位小主还是雾里看花,下面咱们用数据测试一下,就一目了然。
> attach(mtcars)#加载内置数据集
> plot(wt,mpg,main="test")#画散点图
> box(which = "plot", col = "red", lwd = 2)#绘制主绘图区域边框
> box(which = "figure", col = "blue", lwd = 5)#绘制 out margin area区域边框
上图中,红色方框内的区域就是绘图区域,红色框和蓝色框之间的区域就是mar()设置的绘图边距区域。一般来说,绘图边距区域用来显示坐标轴、坐标轴标签及标题。所以在设置时,一般是下边距和左边距都会大一些。如果多个x轴或者y轴,我们也可以考虑将上边距或者右边距放大一些。
通常画图的时候,坐标轴显示不全,一般就是因为margins区域过小。下面我们缩小margins区域的面积,看看是否会和我们预料的一样。
> par(oma=c(1,1,1,1), mar=c(2,2,2,2))
> plot(wt,mpg,main="test1")
> box(which = "figure", col = "blue", lwd = 5)
> box(which = "plot", col = "red", lwd = 2)
我们可以看到margins区域缩小导致x和y轴的标签没有显示,和我们预料的一样,所以下次出现坐标轴标签显示不全的情况时,我们就可以通过调节mar()来解决啦。
至此,有的小主可能会问,那out margin area指的是嘛呀?各位小主别着急呀,且听我娓娓道来。所谓的out margin area指的就是外侧边框和图形设备之间的区域,上面的几张图片大家可能看的不是特别清晰,下面这张图片将将清晰的展示out margin area到底是什么。
> par(oma=c(3,3,3,3), mar=c(5,5,5,5))
> plot(wt,mpg,main="test3")
> box(which = "plot", col = "red", lwd = 2)
> box(which = "figure", col = "blue", lwd = 5)
上图中的虚线方框和蓝色方框之间的区域就是out margin area区域,由于小编是用Rstudio做的图,所以上图中的out margin area就是指与Rstudio图形界面的边距啦。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- [蓝桥杯][算法提高VIP]不同单词个数统计
- 基于spring-boot、grpc、zookeeper的分布式微服务架构
- Codeforces 660C-Hard Process【尺取法练习】
- 杭电5178 (二分练习!)
- Java 13 新特性
- 杭电 1789(贪心思维练习)
- 利用反转函数确定回文串
- Codeforces Round #618 (Div. 2)
- Educational Codeforces Round 82 (Rated for Div. 2)
- [C# 开发技巧]如何防止程序多次运行
- 问题 1117: K-进制数
- Java 11 新垃圾回收器 ZGC
- Red and Black(DFS 深搜练习)
- Codeforces Round #619 (Div. 2)
- 问题 1255: [蓝桥杯][算法提高]能量项链