Annotating text on individual facet in ggplot2

前端 未结 6 927
野的像风
野的像风 2020-11-22 09:39

I want to annotate some text on last facet of the plot with the following code:

library(ggplot2)
p <- ggplot(mtcars, aes(mpg, wt)) + geom_point()
p <-          


        
6条回答
  •  清歌不尽
    2020-11-22 10:15

    I did not know about the egg package, so here is a plain ggplot2 package solution

    library(tidyverse)
    library(magrittr)
    Data1=data.frame(A=runif(20, min = 0, max = 100), B=runif(20, min = 0, max = 250), C=runif(20, min = 0, max = 300))
    Data2=data.frame(A=runif(20, min = -10, max = 50), B=runif(20, min = -5, max = 150), C=runif(20, min = 5, max = 200))
    
    bind_cols(
    Data1 %>% gather("Vars","Data_1"),
    Data2 %>% gather("Vars","Data_2")
    ) %>% select(-Vars1) -> Data_combined
    
    Data_combined %>%
      group_by(Vars) %>%
      summarise(r=cor(Data_1,Data_2),
                r2=r^2,
                p=(pt(abs(r),nrow(.)-2)-pt(-abs(r),nrow(.)-2))) %>%
      mutate(rlabel=paste("r:",format(r,digits=3)),
             plabel=paste("p:",format(p,digits=3))) ->
      label_df 
    
    label_df %<>% mutate(x=60,y=190)
    
    Data_combined %>%
      ggplot(aes(x=Data_1,y=Data_2,color=Vars)) +
      geom_point() + 
      geom_smooth(method="lm",se=FALSE) +
      geom_text(data=label_df,aes(x=x,y=y,label=rlabel),inherit.aes = FALSE) + 
      geom_text(data=label_df,aes(x=x,y=y-10,label=plabel),inherit.aes = FALSE) + 
        facet_wrap(~ Vars)
    

提交回复
热议问题