假设我们有以下data.frames:
dt1 <- data.frame(x=1:10,y=rnorm(10),g="a",c=1)
dt2 <- data.frame(x=1:10,y=rnorm(10),g="b",c=2)
dt <- rbind(dt1,dt2)
bb <- data.frame(x=1:4,y=rep(-5,4))
以下作品
qplot(x=x,y=y,data=dt,group=g,colour=c)+geom_line(aes(x=bb$x,y=bb$y),colour="black")
使用data.frame bb
中的数据生成额外的黑线。但是
bb <- data.frame(x=1:6,y=rep(-5,6))
相同的绘图代码失败,并且投诉行数不同。我可以合并data.frames,即用NAs扩展bb
,但我认为上面的代码是有效的ggplot2代码,尽管不完全是它的精神。所以问题是它失败的原因? (答案可能与以下事实有关:4分为20,而6则不分,但需要更多的背景)
答案 0 :(得分:2)
对于我的第一个bb定义(ggplot2_0.9.2.1),代码对我不起作用:
Error: Aesthetics must either be length one, or the same length as the dataProblems:bb$x, bb$y
这有效:
p1 <- ggplot(data=dt,aes(x=x,y=y,group=g,colour=factor(c)))+geom_line()
p1 + geom_line(data=bb,aes(group=0,colour=factor(0))) +
scale_colour_manual(values = c("black","blue","red"))
答案 1 :(得分:1)
您可以指定在不同图层中使用的不同数据集:
qplot(x=x,y=y,data=dt,group=g,colour=c) +
geom_line(aes(x=x, y=y, group=NULL, colour=NULL), data=bb, colour="black")
此处,geom_line
使用bb
而非dt
的数据。不是使用qplot
和geom
规范的混合,而是使用纯ggplot
符号:
ggplot(data = dt, aes(x = x, y = y)) +
geom_point(aes(group = g, colour = c)) +
geom_line(data=bb, colour="black")