Search code examples
rggplot2subset

Subset and ggplot2


I have a problem to plot a subset of a data frame with ggplot2. My df is like:

df = data.frame(ID = c('P1', 'P1', 'P2', 'P2', 'P3', 'P3'),
                Value1 = c(100, 120, 300, 400, 130, 140),
                Value2 = c(12, 13, 11, 16, 15, 12))

How can I now plot Value1 vs Value2 only for IDs 'P1' and 'P3'? For example I tried:

ggplot(subset(df,ID=="P1 & P3") +
  geom_line(aes(Value1, Value2, group=ID, colour=ID)))

but I always receive an error.


Solution

  • Here 2 options for subsetting:

    Using subset from base R:

    library(ggplot2)
    ggplot(subset(dat,ID %in% c("P1" , "P3"))) + 
             geom_line(aes(Value1, Value2, group=ID, colour=ID))
    

    Using subset the argument of geom_line(Note I am using plyr package to use the special . function).

    library(plyr)
    ggplot(data=dat)+ 
      geom_line(aes(Value1, Value2, group=ID, colour=ID),
                    ,subset = .(ID %in% c("P1" , "P3")))
    

    You can also use the complementary subsetting:

    subset(dat,ID != "P2")