plotting the whole data within each facet using facet_wrap and ggplot2

前端 未结 2 1344
情话喂你
情话喂你 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)
    

提交回复
热议问题