0

を使用していくつかのデータをプロットしていますがfacet_grid()、不可解な点に気付きました。

私は ggplot ライブラリの初心者であり、何かを見落としている可能性があると思います。とにかく、ここに行きます。

次のデータフレームを想定します。

library(ggplot2)

d1 <- runif(500)
d2 <- runif(500)*10
s1 <- sample(LETTERS[1:2], 500, replace = T, prob=c(0.3, 0.7))
s2 <- sample(letters[3:4], 500, replace = T, prob=c(0.4, 0.6))
df <- data.frame(s1, s2, d1, d2)

次のようになります。

s2 s1 d1        d2
c  B  0.3434944 0.9881925
d  A  0.7847741 9.7759946
d  A  0.3142764 2.3654268
...

カテゴリ値に従って並べ替えられるようにデータをプロットします。

ggplot(df, aes(x=df$d1, y=df$d2)) +
geom_point(col="red", cex=2) +
facet_grid(d2 ~ d1)

次のプロットが得られます。

プロット 1

データのサブセットのみをオーバープロットしたいので、次の (ここでは簡略化した) コードを使用しました。

geom_point(data=df[df$d2 > 7.5,],
aes(x=df$d1[df$d2 > 7.5], y=df$d2[df$d2 > 7.5]),
cex=1, colour=I("black"))

次のプロットになります。

プロット 2

ここで、しきい値を設定したので、たとえば「しきい値よりも大きい」というすべての値が既存の値にプロットされたと思います。

これは事実ではないようです。

実際、一部の既存の値には、一致するしきい値がありません。また、一部のしきい値には、一致する既存の値がありません。私を最も困惑させているのは、データポイントが同じデータフレームから来ているというのが私の理解であり、最初のレイヤー(既存のもの)に2番目のレイヤーが含まれていることを期待していることです。ここで何か不足していますか?

また、注意深く見ると、プロットされた点は正しい 2D 位置に一致していますが、間違った象限にあります。

さらに不可解: 次のサブセットをプロットすると:

ggplot(df[df$d2 < 7.5,], aes(x=df$d1[df$d2 < 7.5], y=df$d2[df$d2 < 7.5])) +
geom_point(col="red", cex=2) +
facet_grid(d2 ~ d1) +
geom_point(data=df[df$d2 > 7.5,], aes(x=df$d1[df$d2 > 7.5], y=df$d2[df$d2 > 7.5]), cex=1, colour=I("black"))

既存の値の一部は、「しきい値を超える」領域から「しきい値を下回る」領域に移動します。誰かがそのような行動を説明できますか?

どうもありがとう。

4

1 に答える 1

0

問題の理由を正確に説明することはできませんがsubsets、プロット関数内でファセットを認識していなかったと思います。に新しいT/F列を作成するdataframeことで、個々の の色とサイズを制御できますfacet。これでいいの?

EDIT中空点を使用して、shape=21およびを使用しscale_fill_manualて、質問に正確に対処します。

df$d<-df$d2>7.5

ggplot(data=df, aes(x=d1, y=d2,colour=d,size=d,fill=d))+
    facet_grid(s1~s2)+
    geom_point(show.legend=F,shape=21,size=2,stroke=1.5,col="red")+
    scale_fill_manual(values=setNames(c('black','red'),c(T,F)))

ここに画像の説明を入力

于 2016-11-08T22:25:38.537 に答える