plotting the whole data within each facet using facet_wrap and ggplot2

前端 未结 2 1340
情话喂你
情话喂你 2020-12-16 04:23

I am trying to plot line graphs for and facet_wrap for each dataset. What I would love to have is in light grey, transparent or something, all datasets in the b

相关标签:
2条回答
  • 2020-12-16 05:07

    Here is an approach. It might not be suitable for larger datasets, as we replicate the data number_of_facets-times.

    First, we do some data-wrangling to create this desired dataframe. df$obs_id <- 1:nrow(df) #unique ID for each observation

    #new data with unique ID's and 'true' facets
    df2 <- expand.grid(true_facet=unique(df$id), obs_id=1:nrow(df))
    
    #merge them
    dat <- merge(df,df2,by="obs_id",all=T)
    

    Then, we create a flag defining the 'true' faceted variable, and to discern background from foreground.

    dat$col_flag <- dat$true_facet == dat$id
    

    Now, plotting is easy. I've used geom_line twice instead of scales, as that was easier than to try to fix the ordering (would lead to black being plotted below grey).

    p1 <- ggplot(dat, aes(x=x,y=y, group=id))+
      geom_line(color="grey")+
      geom_line(dat=dat[dat$col_flag,],size=2,color="black")+
      facet_wrap(~true_facet)
    

    0 讨论(0)
  • 2020-12-16 05:22

    Here's another approach:

    First add a new column identical to id:

    df$id2 <- df$id
    

    Then add another geom_line based on the df without the original id column:

    ggplot(df, aes(x,y, group=id)) + 
      geom_line(data=df[,2:4], aes(x=x, y=y, group=id2), colour="grey") +
      geom_line() + 
      facet_wrap(~ id)
    

    0 讨论(0)
提交回复
热议问题