我有5个地块(让我们称它们为p_1p_5).我想将它们全部显示在网格中:其中三个在第一行,剩下两个在第二(也是最后)行.当然,这可以通过par(mfrow = c(2, 3))来实现.然而,我希望底部的两个地块居中,这样网格右下角就没有一个大空间.如何才能实现这一目标?

推荐答案

在R基中,您可以使用layout,这将创建一个矩阵供您将图形映射到-在这里,您需要2行,每行6个空间,以使事物均匀.matrix(...)中的数字可以被概念化为地块号(1 =第一个地块,等等,请注意,0 =无地块),它们重复的次数就是它们占据的空间数:

layout(matrix(c(1,1, # first plot (covers top spaces 1-2)
                2,2, # second plot (covers top spaces 3-4)
                3,3, # third plot (covers top spaces 5-6)
                0, # blank (covers bottom space 1 (0 = blank plot)
                4,4,# fourth plot (covers bottom spaces 2-3)
                5,5, # 5th plot (covers bottom spaces 4-5)
                0), # blank (covers bottom space 6)
                nrow = 2, byrow = TRUE))

plot(1:5, type = "p")
plot(1:5, type = "l")
plot(1:5, type = "b")
boxplot(runif(100))
hist(1:100)

enter image description here

数字翻倍的原因是因为你需要在行上留出偶数个"空间"-在这里,每一行有6个"空间"-

  • 在顶部,6个空间只需三个数字,因此每个数字占用两个空间
  • 在底部,您只需要两个图形来代表六个空间-每个图形占用两个空间,其余两个空间放在两侧以创建正确的中心

这允许您在底部分割"额外"空间,并将其放置在每个尺寸上(0表示没有绘图).

通过地块编号来看待它可能更有意义:

(1)显示所有12个空间(6x 2):

enter image description here

(2)五个地块布局,每个地块占用2个空间:

enter image description here

如果您在其中添加两个额外的图(总共7个)来查看它们的go 向(并看到那些只有一个数字的空间中的每个图只有一半大小),那么可视化可能会更容易:


layout(matrix(c(1,1, # first plot
                2,2, # second plot
                3,3, # third plot
                6, # 6th plot
                4,4,# fourth plot
                5,5, # 5th plot
                7), # 7th plot)
                nrow = 2, byrow = TRUE))

plot(1:5, type = "p")
plot(1:5, type = "l")
plot(1:5, type = "b")
boxplot(runif(100))
hist(1:100)
boxplot(runif(100), col = "red")
boxplot(runif(100), col = "blue")

enter image description here

R相关问答推荐

将Multilinetring合并到一个线串中,使用sf生成规则间隔的点

创建重复删除的唯一数据集组合列表

过滤矩阵以获得R中的唯一组合

R的GG平行坐标图中的排序变量

如何使用`ggplot2::geom_segment()`或`ggspatial::geom_spatial_segment()`来处理不在格林威治中心的sf对象?

如果行和大于值,则过滤

过滤器数据.基于两列的帧行和R中的外部向量

如何在xyplot中 for each 面板打印R^2

使用case_match()和char数组重新编码值

未识别时区

Select 季度月值

R中1到n_1,2到n_2,…,n到n_n的所有组合都是列表中的向量?

将向量元素重新排序为R中的第二个

根据r中另一个文本列中给定的范围对各列求和

使用列中的值来调用函数调用中应使用的其他列

如何构建一个for循环来循环处理动物ID?

如何使用循环从R中的聚合函数创建列,而不会在名称中给出&q;$&q;?

如何创建一个由一个连续变量和一个因素变量组成的复杂方框图?

对一个数据帧中另一个数据帧中的值进行计数

使用dplyr删除具有条件的行