[R] How to differ stats_cor labels by group on a ggplot

Paulina Skolasinska p@u||n@@@ko| @end|ng |rom hotm@||@com
Fri Jul 10 15:32:36 CEST 2020

'm using ggplot2 to plot two variables at a time. I'm plotting two age groups and overall data on the same graph. I'm also using stat_cor form the ggpubr package to report correlations for the two groups and overall data.

I want each stat_cor label to have a custom subscript - the group name ("old", "young"). I have managed to do this for the overall data, but I don't know how to add custom labels for each group separately. I'd like the labels to look like this: https://imgur.com/a/naF7uNW

> for (i in 18:21) {
  p1 <- ggplot(df, mapping=aes(x = Age, y = unlist(df[i]), color=factor(AgeGroup))) + 
    geom_smooth(method="lm") + 
    geom_point(size = 4) +
    geom_smooth(data=df, mapping = aes(x = Age, y = unlist(df[i]), group=1, color="black"), method = "lm") +
    scale_colour_discrete(name="Group", labels=c("young", "old", "overall")) + 
    stat_cor(aes(color = factor(AgeGroup), y = unlist(df[i]))) +
    stat_cor(aes(x = Age, y = unlist(df[i]), group=1, color="black", 
                 label = paste(sub("R",expression("R"[overall]),..r.label..), ..p.label.., sep = "~`,`~")))
  ggsave(p1, file=paste0("Age_", names(df)[i], ".png"), scale=1)

More information about the R-help mailing list