Generating Multiple Plots in ggplot by Factor

35,957

You can use facet_grid or facet_wrap to split up graphs by factors.

ggplot(mydata, aes(Var1, Var2)) + geom_point() + facet_grid(~ Variety)

or, on separate plots, just use a simple loop

for (var in unique(mydata$Variety)) {
    dev.new()
    print( ggplot(mydata[mydata$Variety==var,], aes(Var1, Var2)) + geom_point() )
}
Share:
35,957
riders994
Author by

riders994

Python and R based Data Scientist

Updated on July 09, 2022

Comments

  • riders994
    riders994 almost 2 years

    I have a data set that I want to generate multiple plots for based on one of the columns. That is, I want to be able to use ggplot to make a separate plot for each variety of that factor.

    Here's some quick sample data:

    Variety = as.factor(c("a","b","a","b","a","b","a","b","a","b")
    Var1 = runif(10)
    Var2 = runif(10)
    mydata = as.data.frame(cbind(Variety,Var1,Var2))
    

    I'd like to generate two separate plots of Var1 over Var2, one for Variety A, a second for Variety B, preferably in a single command, but if there's a way to do it without splitting the table, that would be ok as well.