【2.1】R作图--布局

首先,我们需要明白R绘图所占的区域包括两大部分,一是外围边距,一是绘图区域。而绘图区域分为两个部分,一是绘图边距,一是主绘图。

par_1

一.边距

外围边距可使用par()函数中的oma来进行设置。比如oma=c(4,3,2,1),就是指外围边距分别为下边距:4行,左边距3行,上边距2行,右边距1行

绘图边距可以使用par()函数中mar来设置比如mar=c(4,3,2,1),与外围边距的设置类似,是指绘图边距分别为下边距:4行,左边距3行,上边距2行,右边距1行。很明显这个设置顺序是从x轴开始顺时针方向。行的概念与之前的相同。也可以使用mai来设置。mai与mar唯一不同之处在于mai不是以行为单位,而是以inch为单位。

二.绘图区域

绘图区域可使用par()函数中的mfrow, mfcol来进行布局

比如mfrow(2,3)就是指将绘图区域分成2行3列,并按行的顺序依次绘图填充;

比如mfcol(3,2)就是指将绘图区域分成3行2列,并按列的顺序依次绘图填充

比如有三个图,我们希望的布局是第一排有一个图,第二排有两个图,那么layout(matrix(c(1,1,2,3), nrow=2, ncol=2, byrow = TRUE) byrow = TRUE相当于数字按行开始排列,相同数字就并在一起了。

如果希望第一排有两个图,第二排有一个图,那么就是
layout(matrix(c(1,2,3,3),nrow=2,ncol=2,byrow=TRUE)。
Layout(matrix(c(1,2,3,3),widths=c(1,3),heighths=c(1,3))
Layout(matrix(c(1,2,3,3), c(1,3), c(1,3))
上面的就相当于长宽比例分为1:3

如果需要大图,小图,内嵌图这layout()

虽然很容易实现,但多少有点麻烦,不是那么随心所欲。还是回过头来使用par()吧。使用par()的中fig=在画布任意位置上画图。在使用fig参数时,需要把画布理解成左下角为坐标(0,0),右上角为(1,1)的一个坐标系。fig=c(x1,x2,y1,y2)来设置该参,x1,x1,y1定位绘图区的左下角,x2,y2定位绘图区的右上角。使用new=TRUE参数来确认是否在原画布上继续画,还重新在一张新画布上开始画。

注:par应该是graphics 包中的函数,他应该只能对这个包中生成的device做调整,对其他包中的作图device不能调整吧,所以par对ggplot没有作用

参考资料:

糗世界 http://pgfe.umassmed.edu/ou/archives/2395

药企,独角兽,苏州。团队长期招人,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn