能否按照两列分组?这样就可以使用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()) # ...
使得点6
和12
属于同一组,但不包括3
。
从这个问题的例子中,使用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()
qplot(round, price, data=firm, group=id, color=id, geom='line') +
geom_smooth(aes(group=interaction(size, type)))
粘贴
在一起,然后使用该变量作为分组?frame$grp <- paste(frame[,1],frame[,2])
一个稍微正式一点的做法是使用 interaction
函数。
data.frame
来进行绘图。绘图应该绘制您的数据框(df),而不是相反地。 - ClementWalterpaste
的一个缺点是,当输入为因子时,它会丢弃水平级别,而interaction
保留原始因子的顺序。这意味着使用interaction
方法可以更自然地对组进行排序。 - Kota Moriinteraction
的一个缺点是它可能会丢失NA
。考虑以下示例:paste(c("a","b", NA, NA), c(1,2,1,2))
,它将生成四个不同的分组变量:"a 1" "b 2" "NA 1" "NA 2"
,而interaction(c("a","b", NA, NA), c(1,2,1,2))
只会生成三个分组变量。 - fabernaes(group = paste(treatment, replicate))
中使用paste
,但不要修改d
。 - Nate