使用dplyr和ggpubr包,可以按组计算p值,然后根据p值有条件地为不同的组添加geom_smooth。 示例代码如下:
library(dplyr)
library(ggplot2)
library(ggpubr)
# 创建示例数据集
set.seed(123)
df <- data.frame(x = c(rep("A", 20), rep("B", 20)),
y = c(rnorm(20), rnorm(20, mean = 1)),
group = rep(c("Group1", "Group2"), each = 10))
# 按照组计算p值
p_values <- df %>%
group_by(group) %>%
summarize(p_value = t.test(y ~ x)$p.value)
# 创建基础图表
p <- ggplot(df, aes(x, y)) +
geom_point() +
labs(title = "Example plot")
# 按条件添加geom_smooth
p + geom_smooth(data = subset(df, group == "Group1"), method="lm") + # 没有p值条件
geom_smooth(data = subset(df, group == "Group2" & p_values$p_value < 0.05), method="lm") + # p值小于0.05时添加
facet_wrap(~ group) # 分面
此示例将数据集按照x和group分组,然后计算每个组的差异性(p值)。最后,按照p值条件来添加geom_smooth,只有在p值小于0.05时才会添加新的回归线。