在 R 中使用 mfrow:如何给每个子图一个不同的 y-label 和 x-axis 一个标签

using mfrow in R : how do you give each subplot a different y-label and the x-axis one label

我在 R 中工作,我必须制作许多箱线图。这是群体差异的可视化。我想将 x-axis 重新标记为只有一个标题而不是五个(每个子图一个)。我最大的问题是我还希望所有子图的 y-axis 具有不同的标签。

这是我到目前为止尝试过的:

par(mfrow=c(1,5))
lapply(NEW8[,c("gawayf",    "humf", "sgamesf",  "swtoyf",   "kissf")],
       function(x) boxplot(x ~ NEW8$PAPA_p4_adhd,col=rainbow(2),
                           names=c("CN","ADHD"),
                           ylab=c("gawayf", "humf", "sgamesf",  "swtoyf",   "kissf")))

所有 y-labels 都添加到每个子图,因此每个子图有 5 行 y-axis 标签(gawayf、humf、sgamef、swtoyf、kissf),每个图都说明使用了哪些数据创建箱线图 (PAPA_P4_ADHD)。 我希望每个地块只有相应的 y-axis 标签,而 x-axis 对所有五个地块都有 1 个标签。

这是我当前的输出:

非常感谢

而不是 lapply 尝试 mapply - 这将允许将不同的参数传递给每个函数调用:

par(mfrow=c(1,5))
myBox <- function(x, y, ...) boxplot(x ~ y, col=rainbow(2), names=c("CN", "ADHA"), ...)
mapply(myBox,
       x    = NEW8[,c("gawayf",    "humf", "sgamesf",  "swtoyf",   "kissf")],
       y    = list(NEW8$PAPA_p4_adhd),  # we make this a list so it has length(1)
       ylab = c("gawayf", "humf", "sgamesf",  "swtoyf",   "kissf"),
       xlab = ""  # empty x-lab
       )

对于 x-lab,你必须做一个技巧 - 开始一个覆盖所有图的新空图,并且只添加 x 轴:

par(fig=c(0,1,0,1), oma=c(0,0,0,0), mar=par("mar"), new=TRUE)
plot.new()
title(xlab="my x-axis")

注意:我自己并没有尝试 运行 此代码,如果这里有任何问题 - 请发表评论并尝试解决它。​​