R语言绘图布局
在R语言中,par 函数可以设置图形边距,其中oma 参数设置outer margin, mar 参数设置margin,
这些边距有什么不同呢,通过box函数可以直观的看到
box 默认在当前图形绘制边框,第一个参数which = "plot", 所以在当前图形上绘制边框
which 的值除了plot 之外,还可以选择 figure, inner, outer
接下来分别用不同的值测试一下,为了区分,为不同的边框设置不同的颜色和类型,代码如下:
attach(mtcars)
plot(wt, mpg)
abline(lm(mpg~wt))
title("Regression of MPG on Weight")
box(which = "plot", col = "red", lwd = 2)
box(which = "figure",col = "blue", lwd = 4)
为了区分,plot的边框为 红色, figure 的边框为 蓝色,效果如下:

可以看出,在figure 区域中包含了plot 区域, plot 区域指的是实际绘图中的坐标系内的区域,里面是坐标系中的点,线等元素,而在figure 和 plot 区域之间的是坐标轴的刻度,x轴和y中的标签,title 等元素
在红色的边框和蓝色的边框之间的区域就是inner margin, 如果inner margin 太窄会发生什么,用一个实际的例子看一下
par(oma=c(1,1,1,1), mar=c(2,2,2,2))
attach(mtcars)
plot(wt, mpg)
abline(lm(mpg~wt))
title("Regression of MPG on Weight")
box(which = "plot", col = "red", lwd = 2)
box(which = "figure",col = "blue", lwd = 4)
效果如下:

可以看到,坐标轴对应的标题没有了,通过mar 参数设置了inner margin 的宽度,由于都是1,太窄了,所以坐标轴的标题没显示出来,下次遇到类似的问题,就知道因该将inner margin 设置的大一些
mar 参数的值是一个长度为4的向量,分别对应下,左,上,右 4个方向的inner margin, 只需要记住第一个对应的是下,然后沿逆时针方向设置就可以了;
解决了inner margin 的问题,那么outer margin 有是怎么一回事呢?
在figuer 区域和我们整个绘图设备之间,其实还有一个边距,这个边距就是outer margin, 只不过默认值都是0,所以看不到
接下来我们用oma 参数设置outer margin 的值,将其设置的宽一点,然后再用box 标记出outer 边框和figure 边框,直观的看一下,代码如下:
par(oma=c(2,2,2,2))
attach(mtcars)
plot(wt, mpg)
abline(lm(mpg~wt))
title("Regression of MPG on Weight")
box(which = "plot", col = "red", lwd = 2)
box(which = "figure",col = "blue", lwd = 4)
box(which = "outer", col = "black", lty = 8)

图中虚线对应的就是outer 边框,在outer 和 figure 边框之间的就是 outer margin , 通过oma 参数的值来设置outer margin 的宽度,和mar 类似,也是从下方开始,沿着逆时针方向进行设置
通过上面的几个例子,我们就可以看到,在R语言中,在一个绘图设备上有3个不同的边框,最外圈为outer 边框,可以看作整张纸的边沿,而中间的figure 边框才是绘制图形的地方,通过par 函数的oma 参数控制figure 区域的大小;
plot 区域绘制的是坐标系中的元素,在plot 区域和figure 边框之间的inner margin 用来放置坐标轴刻度,标题等元素,通过par 函数的mar 参数可以设置其大小
R语言绘图布局的更多相关文章
- R语言绘图边框的单位
在R语言中指定画图边框时,通常使用两种单位, lines 和 inches 当然,这两个单位之间是可以相互转换的,那么 1 inch = ? line 答案是1 inches = 5 lines 下面 ...
- R语言绘图高质量输出
R语言通过支持Cairo矢量图形处理的类库,可以创建高质量的矢量图形(PDF,PostScript,SVG) 和 位图(PNG,JPEG, TIFF),同时支持在后台程序中高质量渲染.在ggplot2 ...
- linux命令行下使用R语言绘图
系统:centos 6.4 64bit 环境安装参考:http://hi.baidu.com/solohac/item/4a18e78f1bef9b5825ebd99c 在R语言中可以使用png()等 ...
- R语言绘图:时间序列分析 ggplot2绘制ACF PACF
R语言真是博大精深 方法一 Acf(gold[,2], type = "correlation",lag.max = 100) Acf(gold[,2], type = " ...
- R语言绘图002-页面布局
par().layout().split.screen()函数 1. par()函数的参数详解 函数par()可以用来设置或者获取图形参数,par()本身(括号中不写任何参数)返回当前的图形参数设置( ...
- 从零开始学习R语言(八)——R语言绘图
本文首发于知乎专栏:https://zhuanlan.zhihu.com/p/74051739 也同步更新于我的个人博客:https://www.cnblogs.com/nickwu/p/125683 ...
- R语言绘图边框
在R语言中, 绘图边框一共有3个区域: device region : figure region : plot region : 在描述不同区域大小的时候,有对应的不同参数: din : 返回d ...
- R语言——绘图函数深入学习
利用R自带数据集 通过data()函数可以查看R自带数据集. > data() 返回以下结果,每一条记录都是一个数据,键入相应的数据名称可以查看具体信息. Data sets in packag ...
- R语言绘图时的边界碰撞问题
当我们在绘图时,经常会遇到这样的问题,添加的文字标记超出了坐标系的问题,导致文字显示不全 比如下面这个例子: plot(c(1,5),c(1,5)) text(5,5.1,"ABCDEF&q ...
随机推荐
- javascript Dictionary data structures
Dictionary常被称为数据字典,是一种用来保存键值对的数据结构,比如我们日常的电话本,就是一个Dictionary.我们通过键(名字),就可以访问到对应的值(电话号码).在C++与java中我们 ...
- 工作中常用的mysql操作
一.在一个数据库中定义的存储过程或者是函数在另一数据库的存储过程中引用 1.我首先在数据库player_db中构建了一个函数:p_exp_to_level BEGIN ; ; RETURN v_lev ...
- PHP通过__call实现简单的AOP(主事务后的其他操作)比如前置通知,后置通知
/** * person class */ class Person { /** * person class -> function say */ public static function ...
- java Webservice(一)HttpClient使用(二)
HTTP 协议可能是现在 Internet 上使用得最多.最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源.虽然在 JDK 的 java.net 包中已经提供了 ...
- perl的匿名引用
perl中列表不能嵌套,只能通过引用的方式构建复杂的结构.引用其实就是c中的指针,只不过perl中对指针,也就是一个地址的声明和取值有自己的一套方法. 1.先复习普通标量的引用方法: [vagrant ...
- GCC中文错误提示
最近在教人学c语言,英语不过关,想把ubuntu16.04的gcc改为中文提示,经查找后发现:目前(2016.8.5)基于gcc5.4版本的中文帮助好像还没有. 后来又仔细查找,现在最新的有中文的也就 ...
- [svc][op]LVS+keepalived
lvs是一种负载均衡技术.注意区分负载均衡和高可用的区别. keepalive是lvs的管理工具 ipvsadm也是lvs的管理工具 keepalive借助ipvsadm管理lvs.所以通常说lvs+ ...
- DrawPrimitivesTest
#ifndef _DRAW_PRIMITIVES_TEST_H_ #define _DRAW_PRIMITIVES_TEST_H_ ////----#include "cocos2d.h&q ...
- Spark踩坑记——数据库(Hbase+Mysql)转
转自:http://www.cnblogs.com/xlturing/p/spark.html 前言 在使用Spark Streaming的过程中对于计算产生结果的进行持久化时,我们往往需要操作数据库 ...
- solr中时区处理
solr.in.sh中的最后 # By default the start script uses UTC; override the timezone if needed SOLR_TIMEZONE ...