我正在尝试将p值添加到下图中的每个箱线图对中。我希望p值被放置在每个土层标签下('O','A‘和'B')。

我的数据如下所示:
> head(kiwi_l)
# A tibble: 6 x 6
type horizon root_name length diameter n_child
<chr> <chr> <chr> <dbl> <dbl> <int>
1 Elevated CO2 A R1_A_L_S4G 0.0752 0.0342 0
2 Elevated CO2 A R1_A_L_S4F 0.0987 0.0319 0
3 Elevated CO2 A R1_A_L_S4E 0.105 0.0209 0
4 Elevated CO2 A R1_A_L_S4D 0.0476 0.0127 0
5 Elevated CO2 A R1_A_L_S4C 0.110 0.0282 0
6 Elevated CO2 A R1_A_L_S4B 0.244 0.0168 0而我用来生成图形的代码是:
l_horizon<-ggplot(kiwi, aes(x=type, y=length, fill=type, palette='jco'))
+
geom_boxplot() +
facet_grid(. ~ factor(horizon, level=level_order)) +
theme_pubr() +
scale_y_continuous(name='Primary root length (cm)') +
scale_x_discrete(name='Treatment') +
ggtitle('Soil horizon') + theme(plot.title = element_text(hjust = 0.5)) +
theme(legend.position="none") +
theme(plot.title = element_text(size = 10, face = "bold"),
text = element_text(size = 10),
axis.title = element_text(face="bold"),
axis.text.x=element_text(size = 10),
axis.text.y=element_text(size=10),
axis.title.x = element_blank(),
axis.title.y=element_text(size=10))
l_horizon<-l_horizon+scale_fill_locuszoom()
l_horizon请帮帮我!
发布于 2019-05-16 22:06:29
由于没有数据可用,我将编造一些数据:
set.seed(0)
df <- data.frame(f1 = rep(c("O","A","B"), each = 30),
f2 = rep(c("M","N"), 45),
y = rnorm(90))接下来,我们对该数据进行测试并对其输出进行格式化:
tests <- split(df, df$f1) %>% sapply(function(x){
pval <- t.test(x[x$f2 == "M", "y"], x[x$f2 == "N", "y"])$p.value
paste0("p-value = ", format(pval, digits = 2, nsmall = 2))
})现在,如果您希望它成为刻面条带的一部分,您可以调整df$f1的级别以包括p值:
levels(df$f1) <- paste0(levels(df$f1), "\n", tests)
ggplot(df, aes(x = f2, y = y)) +
geom_boxplot() +
facet_grid(~ f1)

如果您希望p值位于面板中而不是条形图中,可以使用annotate()函数将它们放置在面板中。y = Inf确保它们被放在最上面。
ggplot(df, aes(x = f2, y = y)) +
geom_boxplot() +
facet_grid(~ f1) +
annotate("text", x = 1.5, y = Inf, label = tests, vjust = 1)

发布于 2019-05-16 21:57:30
如果你知道在y轴上放置文本的位置,也许可以这样注释?
p_values <- c(1.1,2.2,3.3)
ggplot(data = d2,mapping = aes(x=range,y=p_area)) +
geom_boxplot() +
annotate("text", x=c(1,2,3), y=0.5, label= p_values)

https://stackoverflow.com/questions/56169595
复制相似问题