17

選択したポイントを強調表示したいのですが、奇妙な動作に遭遇しました。最初のダミーデータ:

a <- 1:50
b <- rnorm(50)
mydata <- data.frame(a=a,b=b)
ggplot(mydata,aes(x=a,y=b)) + geom_point()

これは正しく動作します。geom_pointここで、いくつかのポイントを強調するために、別のレイヤーを追加します。

ggplot(mydata[20:40,],aes(x=a,y=b)) + 
    geom_point() + 
    geom_point(aes(x=a[c(10,12,13)],y=b[c(10,12,13)]),colour="red")

限られた範囲のデータのみを表示していることに注意してください ( [20:40])。ここで、奇妙な動作が発生します。

ggplot(mydata[10:40,],aes(x=a,y=b)) + 
    geom_point() + 
    geom_point(aes(x=a[c(10,12,13)],y=b[c(10,12,13)]),colour="red")

選択した範囲のサイズを変更すると、ドイツ語から大まかに翻訳されたエラーが表示されますError...: Arguments implying different number of rows。奇妙なことに、これは選択した範囲によって異なります。[23:40]動作しますが、動作し[22:40]ません。


英語のエラーは次のとおりです。

Error in data.frame(x = c(19L, 21L, 22L), y = c(0.28198, -0.6215,  : 
  arguments imply differing number of rows: 3, 31
4

3 に答える 3

41

異なるレイヤー間でデータが異なる場合は、レイヤーごとに新しいデータを指定する必要があります。

異なるデータを必要とするdata=...それぞれの引数を使用してこれを行います。geom

set.seed(1)
mydata <- data.frame(a=1:50, b=rnorm(50))
ggplot(mydata,aes(x=a,y=b)) + 
  geom_point(colour="blue") +
  geom_point(data=mydata[10:13, ], aes(x=a, y=b), colour="red", size=5)

ここに画像の説明を入力

于 2012-07-13T10:25:05.760 に答える
5

gghighlightを使用した別のソリューション:

a <- 1:50
b <- rnorm(50)
mydata <- data.frame(a=a,b=b, type = sample(letters, 50, replace = T))

library(gghighlight)
gghighlight_point(mydata, aes(x=a, y=b), label_key = type, 
                  a <= 14 & a >= 10 & b >= 0 , col="red")
于 2018-08-13T11:19:41.237 に答える