Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

group by two columns in ggplot2

Tags:

r

ggplot2

Is it possible to group by two columns? So the cross product is drawn by geom_point() and geom_smooth()?

As example:

frame <- data.frame(  series <- rep(c('a', 'b'), 6),   sample <- rep(c('glass','water', 'metal'), 4),   data <- c(1:12))  ggplot(frame, aes()) # ... 

Such that the points 6 and 12 share a group, but not with 3.

like image 773
Reactormonk Avatar asked Apr 01 '12 22:04

Reactormonk


1 Answers

Taking the example from this question, using interaction to combine two columns into a new factor:

# Data frame with two continuous variables and two factors  set.seed(0) x <- rep(1:10, 4) y <- c(rep(1:10, 2)+rnorm(20)/5, rep(6:15, 2) + rnorm(20)/5) treatment <- gl(2, 20, 40, labels=letters[1:2]) replicate <- gl(2, 10, 40) d <- data.frame(x=x, y=y, treatment=treatment, replicate=replicate)  ggplot(d, aes(x=x, y=y, colour=treatment, shape = replicate,   group=interaction(treatment, replicate))) +    geom_point() + geom_line() 

ggplot example

like image 162
Blue Magister Avatar answered Sep 18 '22 15:09

Blue Magister