gpt4 book ai didi

r - 是否需要 facet_grid/wrap 按变量对箱线图进行分组,而不是用于填充/颜色?

转载 作者:行者123 更新时间:2023-12-04 18:15:15 25 4
gpt4 key购买 nike

我进行了两次实验,其中一些复制了前一组的条件。我有一列用于唯一批处理 ID,另一列包含来自实验 1 的 ID,来自实验 2 的批处理复制了这些 ID。这是一些像这样存储的示例数据:

test <- data.frame(var1=c(rep("A",4), rep("B",4), rep("C",4), rep("D",4)),
var2=rep(c(rep("A",4), rep("B",4)),2),
value=runif(16,1,5))

这是我的ggplot代码:
ggplot(test, aes(x=var1, y=value, fill=var2)) + geom_boxplot()

这给了我根据 var1 排列的批处理 ID的因子顺序。

enter image description here

我想要 var2 中的 A并排和 B 来自 var2并排。使用 facet_grid 是唯一的方法或 facet_wrap ?
 ggplot(test, aes(x=var1, y=value, fill=var2)) + geom_boxplot() +
facet_grid(. ~ var2, scales="free_x")

enter image description here

我尝试添加 group=var2但这给了我重叠且非常宽的箱线图,我也不明白:
ggplot(test, aes(x=var1, y=value, group=var2, fill=var2)) + geom_boxplot()
Warning message:
position_dodge requires non-overlapping x intervals

enter image description here

我可以使用刻面;我主要是在问这个问题,因为当我无法按预期分组时,我感到很惊讶。我还查看了 geom_bar() 的示例对于更多的分组方法,但似乎大多数人并没有这样分组。

随意提供有关如何解决此问题的其他意见。我只是想比较成对的测试结果,以便轻松查看复制是否与原始试验相匹配。

最佳答案

使用 interaction 的作弊方法并调整 scale_x_discrete标签

 ggplot(test, aes(x=interaction(var1,var2), y=value, fill=var2)) + 
geom_boxplot() +
scale_x_discrete(name = 'var1',breaks = c('A.A','C.A','B.B','D.B'),
labels = c('A','C','B','D'))

enter image description here

编辑 感谢@Andrie 的评论

或者您可以创建一个适当排序的因子 或(无序的)因子,具有以正确顺序指定的水平 .
  • ggplot2 尊重因子水平的顺序(无论是否在 ordered 因子中)。
  • 默认情况下,R 将按字典顺序对级别进行排序,因此对于任何其他顺序,您需要指定它。

  • .
    library(plyr) # for arrange 
    var1_order <- unique(as.character(arrange(test,var2)[['var1']]))

    test$var1_order <- ordered(test$var1, levels = var1_order)
    ## or
    test$var1_order_2 <- factor(test$var1, levels = var1_order)
    ## so that
    ggplot(test, aes(x=var1_order_2, y=value, fill=var2)) +
    geom_boxplot() +
    xlab('var1')
    ## or
    ggplot(test, aes(x=var1_order, y=value, fill=var2)) + 
    geom_boxplot() + 
    xlab('var1')

    两者都会给出相同的结果

    编辑——另一种方法

    您可以将 x 轴设为 var2并填写 var1 ,将按 var2 订购然后闪避和填充 var1
      ggplot(test, aes(x=var2,y=value)) + 
    geom_boxplot(aes(fill = var1))

    enter image description here

    关于r - 是否需要 facet_grid/wrap 按变量对箱线图进行分组,而不是用于填充/颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11875397/

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