大家都知道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)#加载内置数据集 上图中,红色方框内的区域就是绘图区域,红色框和蓝色框之间的区域就是mar()设置的绘图边距区域。一般来说,绘图边距区域用来显示坐标轴、坐标轴标签及标题。所以在设置时,一般是下边距和左边距都会大一些。如果多个x轴或者y轴,我们也可以考虑将上边距或者右边距放大一些。 通常画图的时候,坐标轴显示不全,一般就是因为margins区域过小。下面我们缩小margins区域的面积,看看是否会和我们预料的一样。 > par(oma=c(1,1,1,1), mar=c(2,2,2,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)) 上图中的虚线方框和蓝色方框之间的区域就是out margin area区域,由于小编是用Rstudio做的图,所以上图中的out margin area就是指与Rstudio图形界面的边距啦。 |
|