gpt4 book ai didi

r - 一组内的多个箱线图

转载 作者:行者123 更新时间:2023-12-04 10:46:05 24 4
gpt4 key购买 nike

我找到了一些 solutions但不完全是我想要的。我在 R 中有 5 个数据框,每个数据框有 4 列:

假设第一个数据框的名称是“Gene1”

Ind1 Ind2 Ind3 Ind4
1 3 3.2 2.5
1 3 4 2
1.5 2 2.2 1
3.4 2 1 3

其余的数据帧称为“Gene2”、“Gene3”、“Gene4”、“Gene5”,并且是相似的。

我想在同一个图中为所有数据框和所有列并排绘制箱线图。我没有找到任何这样的情节,所以我无法上传图片,但我会尽力解释。

现在根据以上数据,该图将有 20 个箱线图。前 4 个箱线图应彼此接近,x 轴名称应为“Gene1”(对于所有 4 个箱线图),然后在图中留出一点空间,然后是 4 个 x 轴名称为“Gene2”的箱线图,依此类推.

我可以轻松地在一个图中绘制所有箱形图,但我无法区分数据框。意思是,它应该清楚地向我们展示前 4 个箱线图来自“Gene1”,接下来的 4 个箱线图来自“Gene2”,依此类推。

如果问题不清楚,请告诉我。

最佳答案

我怀疑这就是你想要的,事实上,使用标准 graphics 中的绘图函数并不是很复杂。包裹。这些组被绘制为 4 个独立的面板,但在外边缘绘制了一个共享的 y 轴和标题,它看起来像一个单独的图。

# Faking the data, since you didn't provide any
Gene <- data.frame(matrix(rweibull(100*4, 1), 100))
names(Gene) <- paste0("Ind", 1:4)
Gene <- rep(list(Gene), 4)

# Setup the panels
layout(t(1:4))
par(oma=c(2, 4, 4, 0), mar=rep(1, 4), cex=1)
# `mar` controls the space around each boxplot group

# Calculating the range so that the panels are comparable
my.ylim <- c(min(sapply(Gene, min)), max(sapply(Gene, max)))

# Plot all the boxes
for(i in 1:length(Gene)){
boxplot(Gene[[i]], ylim=my.ylim, axes=FALSE)
mtext(paste("Gene", i), 1, 0)
if(i == 1){
axis(2, las=1)
mtext("Expression or what you have", 2, 3)
}
}
title("Look at all my genes!", outer=TRUE)

enter image description here

顺便说一下,我建议将您的数据框存储在一个列表中,而不是通过将它们命名为“Gene1”、“Gene2”、“Gene3”和“Gene4”来模仿列表。以这种方式自动化要容易得多。如果您仍想将它们存储为单独的变量,请替换 Gene[[i]]get(paste0("Gene", i))my.ylim <- ...min(c(min(Gene1), min(Gene2) ...等等。

关于r - 一组内的多个箱线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12784376/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com