在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语言绘图边框的单位的更多相关文章

  1. R语言绘图边框

    在R语言中, 绘图边框一共有3个区域: device region : figure region : plot region   : 在描述不同区域大小的时候,有对应的不同参数: din : 返回d ...

  2. R语言绘图高质量输出

    R语言通过支持Cairo矢量图形处理的类库,可以创建高质量的矢量图形(PDF,PostScript,SVG) 和 位图(PNG,JPEG, TIFF),同时支持在后台程序中高质量渲染.在ggplot2 ...

  3. linux命令行下使用R语言绘图

    系统:centos 6.4 64bit 环境安装参考:http://hi.baidu.com/solohac/item/4a18e78f1bef9b5825ebd99c 在R语言中可以使用png()等 ...

  4. R语言绘图:时间序列分析 ggplot2绘制ACF PACF

    R语言真是博大精深 方法一 Acf(gold[,2], type = "correlation",lag.max = 100) Acf(gold[,2], type = " ...

  5. 从零开始学习R语言(八)——R语言绘图

    本文首发于知乎专栏:https://zhuanlan.zhihu.com/p/74051739 也同步更新于我的个人博客:https://www.cnblogs.com/nickwu/p/125683 ...

  6. R语言绘图布局

    在R语言中,par 函数可以设置图形边距,其中oma 参数设置outer margin, mar 参数设置margin, 这些边距有什么不同呢,通过box函数可以直观的看到 box 默认在当前图形绘制 ...

  7. R语言绘图002-页面布局

    par().layout().split.screen()函数 1. par()函数的参数详解 函数par()可以用来设置或者获取图形参数,par()本身(括号中不写任何参数)返回当前的图形参数设置( ...

  8. R语言——绘图函数深入学习

    利用R自带数据集 通过data()函数可以查看R自带数据集. > data() 返回以下结果,每一条记录都是一个数据,键入相应的数据名称可以查看具体信息. Data sets in packag ...

  9. R语言绘图时的边界碰撞问题

    当我们在绘图时,经常会遇到这样的问题,添加的文字标记超出了坐标系的问题,导致文字显示不全 比如下面这个例子: plot(c(1,5),c(1,5)) text(5,5.1,"ABCDEF&q ...

随机推荐

  1. Android Hawk数据库 github开源项目

    Android Hawk数据库 github开源项目 Hawk 是一个很便捷的数据库  . 操作数据库仅仅需一行代码 , 能存不论什么数据类型 . github 地址: https://github. ...

  2. JS 中document.URL 和 windows.location.href 的区别

    实际上,document 和 windows 这两个对象的区别已经包含了这个问题的答案. document 表示的是一个文档对象,windows 表示一个窗口对象.  一个窗口下面可以有很多的docu ...

  3. CentOS配置SSH远程连接

    本文为大家介绍Centos中配置SSH远程连接的方法,只是简单配置,供初学者参考. 1.配置IP#setup 选择 NetWork configuration 选择 Device configurat ...

  4. 斯坦福IOS开发第五课(第二部分)

    转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/27845257 作者:小马 五 代码演示样例 上面讲到的知识点在这个演示样例都有涉及 ...

  5. mysqldump 备份单个数据库

    mysqldump -uemove -h xx.xxx.xx.xx -P7996 -p --databases dbname >dbname.sql

  6. 日期时间函数(1)-time()&gmtime()&strftime()&localtime()

    ◆time() 取得当前时间.此函数会返回从公元1970年1月1日的UTC时间从0时0分0秒算起到现在所经过的秒数.如果参数t为非空指针的话, 此函数也会将返回值存到t指针所指的内存. 成功则返回秒数 ...

  7. linux下调试core的命令

    在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息).使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数. 1.core文件的生成开 ...

  8. Hystrix使用说明,配置参数说明

    一.什么情况下会触发fallback方法? 名字 描述 触发fallback EMIT 值传递 NO SUCCESS 执行完成,没有错误 NO FAILURE 执行抛出异常 YES TIMEOUT 执 ...

  9. javascript 常用对象

    <!doctype html> <head> <script type="text/javascript"> /* ps:需要注意的是部分的方法 ...

  10. C语言实现单链表(不带头结点)节点的插入

    对单链表进行增删改查是最主要的操作.我在上一篇博客<C语言实现链表节点的删除>实现了删除单链表中的某个节点. 这里我们要来实如今某个位置插入节点.演示样例代码上传至https://gith ...