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 をマージする、つまりbbNA で展開することはできましたが、上記のコードは有効な 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からのデータを使用します。との仕様を混合して使用する代わりに、ここでは純粋な表記法で示します。bbdtqplotgeomggplot

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 に答える