r - 在R中使用mfrow:如何为每个子图赋予不同的y标签和x轴一个标签

标签 r plot visualization lapply boxplot

我正在R中工作,因此必须进行许多箱形图绘制。这是组差异的可视化。我想重新标记x轴,使其只有一个标题而不是五个标题(每个子图一个)。我最大的问题是我还希望所有子图的y轴具有不同的标签。

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

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标签都添加到每个子图中,因此每个子图中有5行y轴标签(gawayf,humf,sgamef,swtoyf,kissf),每个图都说明了用于创建箱线图的数据(PAPA_P4_ADHD)。
我希望每个地块在所有五个地块中仅具有相应的y轴标签,而x轴具有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")

注意:我不是自己尝试运行此代码,如果此处不起作用-请发表评论并尝试解决该问题。

关于r - 在R中使用mfrow:如何为每个子图赋予不同的y标签和x轴一个标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58033179/

相关文章:

c++ - 控制投影仪的单个像素

R:下标文本作为变量

python - 调整条形图上的颜色编码,以便所有值在 matplotlib 中都正确编码

iphone - iOS 音频可视化使用 AVPlayer

r - 提前在函数内指定数据框的列名

r - 转换数据框并在 R 中对其进行汇总

r - 如何将箱线图添加到带有抖动的散点图

r - 如何摆脱边距

python - 为任意音频文件生成缩略图

matlab - 如何通过 3D 图像可视化解决此问题?