0

假设我们有以下 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,即bb用 NA 扩展,但我认为上面的代码是有效的 ggplot2 代码,尽管不完全符合它的精神。所以问题是为什么它会失败?(答案可能与 4 除以 20 的事实有关,而 6 则不然,但需要更多上下文)

4

2 回答 2

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"))
于 2012-11-12T14:34:44.653 回答
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而不是的数据dtqplot这里没有使用和规范的混合,而是采用geomggplot符号:

ggplot(data = dt, aes(x = x, y = y)) +
  geom_point(aes(group = g, colour = c)) +
  geom_line(data=bb, colour="black")
于 2012-11-12T23:44:58.440 回答