查看原文
其他

每天学习一点R:11.绘图区域设置

红皇后学术 红皇后学术 2022-06-07

绘图区域设置

昨天讲解了应用plot函数进行绘图及其绘图参数,在开始绘制一张图像之前,首先要做的就是定义绘图区域,以确定图像绘制的位置及各个元素的分布。

par()函数中除了用于绘图元素的参数之外,还有一些是针对绘图区域设置的参数。

mai,数字向量,格式为c(bottom, left, top, right),以英寸为单位定义绘图区边缘空白大小

mar,数字向量,格式为c(bottom, left, top, right),给出各个方向绘图区边缘空白的大小,默认为c(5, 4, 4, 2) + 0.1。

mfg,c(i,j)形式的数字向量,定义在一个图标列阵中,哪一个位置是下一个图的生成位置。

new,逻辑值,默认值为FALSE,如果设定为TRUE,那么下一个高级绘图命令会清空当前绘图设备。

oma、omi,参数形式为c(bottom, left, top, right) ,用于设定外边界

page,定义是否下一个图形生成在一个新的页面。

plt,形式为 c(x1, x2, y1, y2),设定当前的绘图区域

pty,一个字符型参数,表示当前绘图区域的形状,”s”表示生成一个正方形区域,而”m”表示生成最大的绘图区域。

xpd,如为FALSE,则所有的内容均在plot区域中显示,即坐标轴以内,如为TRUE,则所有的内容在绘图区显示,及margin内,如果NA,则所有的内容在任何区域均可。

mai与mar以及oma和omi之间的区别只是所用的单位不同。

通常情况下常用的参数只有mar和xpd,在进行图像绘制之前输入如下命令:

par(mar = c(4,2,2,1),xpd = TRUE)

mar设置绘图区域边界大小,xpd图像元素可以在边界内出现,如果xpd为FLASE,可能会导致部分图像显示不全。

页面布局

在很多情况下,我们都希望在一副图中展示多个图像,这就涉及到对绘图区域进行分隔和布局。

par()函数中的mfcol、mfrow,用于设定图像设备的布局,参数形式为c(nr, nc),子图的绘图顺序是按列还是按行就分别根据是参数指定的是mfcol还是mfrow。

par(mfcol = c(3,3))

par(mfrow = c(3,3))

mfcol和mfrow设置绘图区域的布局有一个问题,就是只能将绘图区域分成大小相等的子区域,但是我们可能希望不同的子图像所占据的绘图区域大小不一致,这时可以使用layout()函数。

layout(mat, widths = rep.int(1,ncol(mat)),heights = rep.int(1,nrow(mat)),respect = FALSE)

参数详解:

  • mat,layout通过一个矩阵设置绘图窗口的划分;

  • widths,设置不同列的宽度;

  • heights,设置不同行的高度。

mat矩阵应用整数指定绘图区域划分和绘制的先后顺序,0表示该位置不画图,其它数值必须为从1开始的连续整数

layout(matrix(1:6,2,3))

默认条件下,layout同样是将绘图区平均划分。

layout(matrix(c(1,2,3,0,2,3,0,0,3),nr = 3))

通过0元素和其它数值的重复定义不同绘图区的形状。

layout(matrix(1:4,2,2),widths = c(1,2),heights = c(2,1))

通过widths和heights定义不同行和列的长宽比。

扩展阅读



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存