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

Paulina Skolasinska
Sat, 11 Jul 2020 14:09:00 -0000

Thanks Tim, here is the link to the data: https://we.tl/t-c4x9Lw7LeR
I'm posting my code again so it better matches the modified data, and
because I've added several improvements in the meantime.

for (i in 3:6) {
    p1 <- ggplot(df, mapping=aes(x = Age, y = unlist(df[i]),
color=factor(AgeGroup))) +
        geom_smooth(method="lm") +
        geom_point(size = 4) +
        scale_x_continuous(breaks = seq(20,90, by=10)) +
        scale_y_continuous(breaks = seq(0.1,0.5, by=0.1)) +
        theme_classic() +
        expand_limits(y = 0.5) +
        ylab(names(df)[i]) +
        theme(axis.text.x = element_text(face="bold", size=14),
              axis.text.y = element_text(face="bold", size=14),
              axis.title.x = element_text(size=14, face="bold"),
              axis.title.y = element_text(size=14, face="bold"),
              legend.title = element_text(color="black", size=12),
              legend.text = element_text(colour="black", size = 14,
face = "bold")) +
        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])),
                 method = "pearson", label.x.npc =
c("center"), label.y.npc="top") +
        stat_cor(aes(x = Age, y = unlist(df[i]),
                 label =
paste(sub("R",expression("R"[overall]),..r.label..),
..p.label.., sep = "~`,`~"),
                 group=1, color="black"), method =
"pearson",label.y=0.5, label.x.npc = c("center"),
                 position = position_nudge(y = 0.015 * 0.5))

    ggsave(p1, file=paste0("TestAge_", names(df)[i],
".png"), scale=1, width=16, height=10, units="cm")
}


________________________________
Od: Jim Lemon <drjimlemon at gmail.com>
Wys?ane: sobota, 11 lipca 2020 04:09
Do: Paulina Skolasinska <paulina.skol at hotmail.com>
DW: r-help at r-project.org <r-help at r-project.org>
Temat: Re: [R] How to differ stats_cor labels by group on a ggplot

Hi Paulina,
Without data it's hard to work out what you are doing. Even a small
simulated data set would help to get answers.

Jim

On Fri, Jul 10, 2020 at 11:49 PM Paulina Skolasinska
<paulina.skol at hotmail.com> wrote:
>
> '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)
> }
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

	[[alternative HTML version deleted]]