R语言layout()函数绘图指定复杂的图形布局

Posted Z.Q.Feng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R语言layout()函数绘图指定复杂的图形布局相关的知识,希望对你有一定的参考价值。


描述

layout() 函数将一张图片划分为矩阵中的尽可能多的行和列,列宽和行高在各自的参数中指定。


用法

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

layout.show(n = 1)
lcm(x)

参数及其含义

mat

参数含义
mat一个矩阵对象,指定输出设备上下N个图形的位置。矩阵中的每个值必须为0或正整数。如果N是矩阵中最大的正整数,则整数1,…,N-1也必须在矩阵中至少出现一次。

举例:
一个这样的矩阵会被按照相同的元素划为3个区域:


根据上述矩阵画出 layout 布局如下:

nf <- layout(matrix(c(1,1,2,
					  1,1,2,
					  3,3,3),3,3,byrow = TRUE))
layout.show(nf)


widths、heights

参数含义
widths设备上列宽度的值向量。相对宽度由数值指定。绝对宽度(以厘米为单位)由 lcm() 函数指定(参见示例)。
heights设备上行高度的值向量。可以指定相对高度和绝对高度,请参见上面的宽度。

当使用相对宽度\\高度时,weights 和 heights 传入的时一组向量,分别是第 1,2,...n 列的宽度(高度)比,以下述代码为例:

nf <- layout(matrix(c(1,1,2,1,1,2,3,3,3),3,3,byrow = TRUE), 
					c(2, 2, 5), # 第1,2,3列宽度比为2:2:5
					c(3, 3, 4)) # 第1,2,3行高度比为3:3:4
layout.show(nf)

下图中,因为区域1占据了前两列,总宽比为 2 + 2 = 4,所以区域1的宽度 :区域2的宽度 = 4 :5,区域1占据了前两行,总高比为 3 + 3 = 6,所以区域1的高度 :区域3的高度 = 6 :4


同理,使用绝对宽度\\高度时,也传入一组向量,对应的分别是第 1,2,...n 列的宽度\\高度(cm),以下述代码为例:

nf <- layout(matrix(c(1,1,2,1,1,2,3,3,3),3,3,byrow = TRUE), 
			 c(lcm(5), lcm(4), lcm(3)), # 第1,2,3列宽度分别为5cm,4cm,3cm
			 c(lcm(3), lcm(3), lcm(5))) # 第1,2,3行高度分别为3cm,3cm,5cm
layout.show(nf)

n, x

参数含义
n要绘制的图形数(只绘制图形的前n部分)
x解释为厘米数的尺寸

例子

attach(mtcars)
layout(matrix(c(1,1,2,3), 2, 2, byrow = TRUE),
       widths = c(3, 2), # 第1,2列宽度比为3:2
       heights = c(2, 3)) # 第1,2行高度比为2:3
hist(wt)
hist(mpg)
hist(disp)
detach(mtcars)

绘制效果如下:

以上是关于R语言layout()函数绘图指定复杂的图形布局的主要内容,如果未能解决你的问题,请参考以下文章

R语言中绘图par()函数用法

R语言绘图:复杂散点图绘制

R语言layout函数处理可视化图像布局实战

将多个复杂图组合为单个图形中的面板

R语言与医学统计图形-过渡函数qplot

《R语言实战》自学笔记17-图形文本标注