R语言绘图边框的单位
在R语言中指定画图边框时,通常使用两种单位, lines 和 inches
当然,这两个单位之间是可以相互转换的,那么 1 inch = ? line
答案是1 inches = 5 lines
下面给出具体的分析过程:
par 函数中有两个参数,返回的是margin的宽度,只不过单位不同:
mar : 返回边框的宽度, 返回值的单位为 lines
mai: 返回边框的宽度, 返回值的单位为 inches
看下二者的返回值
> par("mar")
[1] 5.1 4.1 4.1 2.1
> par("mai")
[1] 1.02 0.82 0.82 0.42
因为二者返回的是同一个东西, 1.02 inches = 5.1 lines,
所以 1inch = 5 line
明白了不同单位之间的转换比之后,如何利用这些信息,准确的指定边距呢?
看下面这个场景,在图片的右侧通过mtext 添加了一个字符串,但是字符串太长了,所以没显示全

为了显示绘图区域的范围,我用box 画出了对应的边框,从图中可以看到,因为坐标系和绘图边框之间的距离(也就是margin) 太窄了,所以文字没显示完整
为了让文字完整显示,需要将右侧的margin调大一点,我们知道,默认的margins = c(5, 4, 4, 2) + 0.1 lines ,最直接的方式就是把右侧对应的数值调大一点,代码如下:
par(oma = c(1,1,1,1), mar = c(5.1, 4.1, 4.1, 5.5))
plot(1:5, 1:5, type = "n")
mtext(side = 4, "metagenome", las = 1)
box(which = "inner")
调整完之后,效果图如下:

上述的方法存在的一个问题就是,我需要不断尝试不同的值,直到满足要求为止,而且不能够精确的控制所需边框的宽度,那么有没有解决方案呢?
在R语言中,有strwidth 和 strheight 两个函数,用来计算一个字符串所占的宽度和长度,返回的长度可以自已选择
通过strwidth 计算出 "metagenome" 这个字符所占的宽度,然后将对应的margin 设置成这个值就可以了
a <- strwidth("metagenome", units = "inches", cex = 1)
right_margin <- 5 * a
par(oma = c(1,1,1,1), mar = c(5.1, 4.1, 4.1, right_margin))
plot(1:5, 1:5, type = "n")
mtext(side = 4, "metagenome", las = 1)
box(which = "inner")
生成的图片如下:

从图中可以看出,通过这种方式指定边距,非常的精确,不多也不少,保证在所有情况下,都会显示出对应的边距
R语言绘图边框的单位的更多相关文章
- R语言绘图边框
		
在R语言中, 绘图边框一共有3个区域: device region : figure region : plot region : 在描述不同区域大小的时候,有对应的不同参数: din : 返回d ...
 - 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语言(八)——R语言绘图
		
本文首发于知乎专栏:https://zhuanlan.zhihu.com/p/74051739 也同步更新于我的个人博客:https://www.cnblogs.com/nickwu/p/125683 ...
 - R语言绘图布局
		
在R语言中,par 函数可以设置图形边距,其中oma 参数设置outer margin, mar 参数设置margin, 这些边距有什么不同呢,通过box函数可以直观的看到 box 默认在当前图形绘制 ...
 - R语言绘图002-页面布局
		
par().layout().split.screen()函数 1. par()函数的参数详解 函数par()可以用来设置或者获取图形参数,par()本身(括号中不写任何参数)返回当前的图形参数设置( ...
 - R语言——绘图函数深入学习
		
利用R自带数据集 通过data()函数可以查看R自带数据集. > data() 返回以下结果,每一条记录都是一个数据,键入相应的数据名称可以查看具体信息. Data sets in packag ...
 - R语言绘图时的边界碰撞问题
		
当我们在绘图时,经常会遇到这样的问题,添加的文字标记超出了坐标系的问题,导致文字显示不全 比如下面这个例子: plot(c(1,5),c(1,5)) text(5,5.1,"ABCDEF&q ...
 
随机推荐
- jquery资源
			
一.时间日期: 倒计时jQuery插件 Countdown :http://code.google.com/p/jquery-countdown/ 使用案例:http://www.tieyou.com ...
 - 【转】用SQL实现树的查询
			
树形结构是一类重要的非线性结构,在关系型数据库中如何对具有树形结构的表进行查询,从而得到所需的数据是一个常见的问题.本文笔者以 SQL Server 2000 为例,就一些常用的查询给出了相应的算法与 ...
 - CSDN日报20170403 ——《该不该离职?它说了算!》
			
[程序人生]该不该离职?它说了算! 作者:安晓辉 我在加油站工作,月薪扣除五险一金2000多.工作时间长,上班48小时歇息8小时. 今年单位改革把我们都外包出去了,承包人对我各种苛刻要求.有心辞职去干 ...
 - [Jobdu] 题目1510:替换空格
			
题目描述: 请实现一个函数,将一个字符串中的空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 输入: 每个输入文件仅包含一组测 ...
 - iptables的地址取反操作
			
感叹号要写在-d的前面才行,而且要用空格隔开. iptables -A OUTPUT -o eth0 -p tcp ! -d xxx.xxx.xxx.xxx -j DROP
 - 【Android】21.1 画板资源
			
分类:C#.Android.VS2015: 创建日期:2016-03-19 一.简介 画板资源(Drawable Resources)是用XML描述/Resources/drawable中的2D图形文 ...
 - mysql插入中文时候编码问题
			
mysql插入中的时候要设置 set character_client_set = utf-8
 - java 多线程9 : synchronized锁机制  之 代码块锁
			
synchronized同步代码块 用关键字synchronized声明方法在某些情况下是有弊端的,比如A线程调用同步方法执行一个较长时间的任务,那么B线程必须等待比较长的时间.这种情况下可以尝试使用 ...
 - RTX——第7章 任务管理
			
以下内容转载自安富莱电子: http://forum.armfly.com/forum.php 单任务系统学习多任务系统之前,我们先来回顾下单任务系统的编程框架,即裸机时的编程框架. 裸机编程主要是采 ...
 - C++ test的使用
			
http://www.parasoft.com/jsp/trial_request.jsp?itemId=303 去下载,原来是个商业的测试软件,还要去购买,这个成本太大了.. http://down ...