【问题标题】:在 R 中使用 facet_grid 将 Kruskal Wallis pvalue 添加到箱线图中时出错
【发布时间】:2022-01-22 17:20:50
【问题描述】:

我正在尝试将 Kruskal Wallis pvalue 添加到我的箱线图中,虽然我已经看到很多关于该解决方案的帖子,但我无法让它发挥作用。

这是我的数据和运行箱线图的代码:

library(ggplot2)
library(dplyr)
set.seed(1234)
Gene <- floor(runif(25, min=0, max=101))
Age <- floor(runif(25, min=18, max=75))
Group <- c("Group1", "Group1", "Group3", "Group2", "Group1", "Group3", "Group2", "Group2", "Group2", "Group1", "Group1", "Group3", "Group1", "Group2", "Group1", "Group2", "Group3", "Group1", "Group3", "Group3", "Group2", "Group1", "Group3", "Group3","Group2")


df <- data.frame(Gene, Age, Group)

mybreaks <- seq(min(df$Age)-1, to=max(df$Age)+10, by=10)
df$groups_age <- cut(df$Age, breaks = mybreaks, by=10)

bp <- ggplot(df, aes(x=groups_age, y=Gene, group=groups_age)) + 
  geom_boxplot(aes(fill=groups_age)) + 
  facet_grid(. ~ Group)

bp

在这个post 中,我看到了一种方法,但是当我尝试做同样的事情时,我得到了这个错误Error in FUN(X[[i]], ...) : object 'groups_age' not found 并且没有显示情节。

代码:

pv <- df %>%
  group_by(Group) %>%
  summarize(Kruskal_pvalue = kruskal.test(Gene ~ groups_age)$p.value)

bp <- ggplot(df, aes(x=groups_age, y=Gene, group=groups_age)) + 
  geom_boxplot(aes(fill=groups_age)) + 
  facet_grid(. ~ Group) +
  geom_text(data=pv, aes(x=2, y=75, label=paste0("Kruskal-Wallis\n p=",Kruskal_pvalue)))
bp

请注意,我手动放置了 x 和 y,只是为了放置值。但是,我想更自动地完成它,这取决于基因的价值是否会发生变化。

有谁知道我为什么会收到这个错误以及为什么它不起作用?

提前非常感谢

问候

【问题讨论】:

    标签: r ggplot2 boxplot facet-grid kruskal-wallis


    【解决方案1】:

    问题是你让group=groups_age 成为一种全球审美。所有层都将继承全局 aes,因此所有层都将在提供给层的数据中查找名为 groups_age 的列。由于geom_text 中使用的数据pv 不包含此名称的列,因此您会收到错误消息。

    要解决您的问题,您可以删除group=groups_age,因为您的情况不需要它。对于更一般的情况,您必须更具体地制作 localglobal aes。此外,每个 geom 都有一个 inherits.aes 参数(默认为 TRUE)以防止全局 aes 被继承:

    library(ggplot2)
    
    bp <- ggplot(df, aes(x = groups_age, y = Gene)) +
      geom_boxplot(aes(fill = groups_age)) +
      facet_grid(. ~ Group) +
      geom_text(data = pv, aes(x = 2, y = 75, label = paste0("Kruskal-Wallis\n p=", Kruskal_pvalue)))
    bp
    

    reprex package (v2.0.1) 于 2021 年 12 月 21 日创建

    【讨论】:

      猜你喜欢
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-11
      • 1970-01-01
      • 2016-05-07
      • 2017-05-26
      • 2021-09-22
      • 1970-01-01
      相关资源
      最近更新 更多