在ggplot2中由两列组成

是否可以按两列分组? 所以cross产品是由geom_point()geom_smooth()绘制的?

举个例子:

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

使点612共享一个组,但不与3

为什么不把这两列paste在一起,并将variables作为组使用?

 frame$grp <- paste(frame[,1],frame[,2]) 

更正式的做法是使用函数interaction

以这个问题为例,使用interaction将两列结合成一个新的因素:

 # 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的例子

例如:

  qplot(round, price, data=firm, group=id, color=id, geom='line') + geom_smooth(aes(group=interaction(size, type)))