我想为facet_wrap
中的每个图添加p值标签,而不重命名多面变量的顶部标签。我设置了scales="free"
,因此请考虑到这一点。
在绘制离散变量时,我能够做到这一点,因为我只需要在aes(x = labels)
上为geom
提供标签。但是,当涉及密度时,我需要提供数值变量,我希望ggplot
估计该密度。
这里有一个最小的可复制代码:
library(tidyverse)
# Data frame
df <- tibble(Var = c("Var1", "Var1", "Var1", "Var1", "Var2", "Var2", "Var2", "Var2"),
Val = c(1, 1, 2, 3, 3, 3, 4, 2),
Pvl = c("0.567", "0.049*", "0.078.", "0.003*", "0.567", "0.049*", "0.078.", "0.003*"))
# Plot
ggplot(df) +
geom_density(aes(x = Val)) +
facet_wrap(~Var) +
labs(x = NULL)
这将导致:
我希望它返回的是:
答案 0 :(得分:1)
我不知道如何在切面之后设置标签,因此我提供了另一个选项,该选项使用grid.arrange()
将多个ggplots放在一起,并分别使用map2()
设置标签。
library(tidyverse)
library(gridExtra)
df %>% split(.$Var) %>%
map2(c("0.078.", "0.049*"),
~ ggplot(.x, aes(x = Val)) +
geom_density() + xlab(.y) + # xlab(.y) is what you expect
xlim(1, 4) + ylim(0, 0.8) +
ggtitle(.x$Var) + theme_bw() +
theme(plot.title = element_text(hjust = 0.5))) %>%
reduce(grid.arrange, ncol = 2)
答案 1 :(得分:0)
这对您有用吗?
library(tidyverse)
ggplot(df) +
geom_density(aes(x = Val)) +
facet_wrap(~Var,scales="free") +
labs(x="")+
geom_text(data=data.frame(x=2.4, y=c(0.3,0.8), label=c("0.078.","0.049*"),
Var=c("Var1","Var2")),
aes(x,y,label=label), inherit.aes=FALSE)+
theme_bw()
#You can change themes
#y=0.8 and 0.3 to maintain plot