我正在尝试将 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
在这篇文章中,我看到了一种方法,但是当我尝试做同样的事情时,我得到了这个错误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,只是为了放置值。但是,我想更自动地完成它,这取决于基因的价值是否会发生变化。
有谁知道我为什么会收到该错误以及为什么它不起作用?
首先十分感谢
问候