如何使用R语言graphics包设置2×3绘图区域绘制类似示例图形?
用R的graphics包设置2×3绘图布局的方法
1. 基础布局设置:par() 函数的 mfrow/mfcol 参数
graphics包最常用的布局控制方式是通过par()函数的mfrow或mfcol参数,两者核心区别在于绘图顺序:
mfrow = c(行数, 列数):按行顺序填充绘图区域(先画满第一行所有子图,再绘制第二行)mfcol = c(行数, 列数):按列顺序填充绘图区域(先画满第一列所有子图,再绘制第二列)
要实现2行3列的标准布局,直接设置对应参数即可,示例代码如下:
# 激活2行3列的绘图空间,按行填充 par(mfrow = c(2, 3)) # 逐个绘制6个示例图形 plot(rnorm(50), main = "图1: 正态分布散点") hist(runif(100), main = "图2: 均匀分布直方图") boxplot(iris$Sepal.Length, main = "图3: 箱线图") plot(iris$Sepal.Length ~ iris$Petal.Length, main = "图4: 变量关联散点图") pie(c(30, 20, 50), labels = c("A", "B", "C"), main = "图5: 占比饼图") barplot(table(iris$Species), main = "图6: 类别条形图") # 绘制完成后恢复默认的单图布局 par(mfrow = c(1, 1))
2. 调整布局细节:边距与整体标题
如果默认的绘图边距过宽/过窄,可通过par()的mar参数调整单图内边距(顺序为:下、左、上、右,单位为文本行),oma参数调整整个布局的外边距:
# 设置2行3列布局,同时压缩内边距、预留外边距 par(mfrow = c(2, 3), mar = c(2, 2, 1, 1), oma = c(1, 1, 2, 1)) # 批量绘制图形 for (i in 1:6) { plot(rnorm(100), main = paste("图", i)) } # 给整个布局添加总标题 mtext("2×3布局示例合集", outer = TRUE, cex = 1.2, font = 2) # 恢复默认绘图参数 par(mfrow = c(1, 1), mar = c(5, 4, 4, 2) + 0.1, oma = c(0, 0, 0, 0))
3. 灵活自定义布局:layout() 函数
如果需要调整子图的宽高比例(比如让某一行更矮、某一列更宽),可以用layout()函数。对于标准2×3布局,示例如下:
# 创建2行3列的布局矩阵,按行填充子图位置 layout_matrix <- matrix(c(1, 2, 3, 4, 5, 6), nrow = 2, byrow = TRUE) layout(layout_matrix) # 绘制图形 for (i in 1:6) { plot(rnorm(100), main = paste("图", i)) } # 恢复默认布局 layout(1)
内容的提问来源于stack exchange,提问作者Azzeddine REGHAIS
相关产品推荐
相关产品推荐

