0

各散布図のggplotを使用してファセット散布図を作成したいのですが、散布図全体の上に異なる色の(同じデータセットの)単一のIDを使用して、データセット全体を1つの色で含めます。これはデータです:

**trajectories**

X    Y    ID
2    4     1
1    6     1
2    4     1
1    8     2
3    7     2
1    5     2
1    4     3
1    6     3
7    4     3

次のコードを使用して、IDごとに散布図を作成します。

ggplot(trajectories, aes(x=X, y=Y)) + 
geom_point() + 
facet_wrap( ~ ID)

これらの各散布図をデータセット全体の散布図に印刷するにはどうすればよいですか?

4

3 に答える 3

3

私が考えることができる唯一の方法は、データセットを3回複製し、色に代替IDを設定し、ファセットに別のグループを設定することです。あなたdata.framedf

df$ID  <- NULL
df$ID1 <- rep(1:2, c(3,6))
df$ID2 <- c(2,2,2,1,1,1,2,2,2)
df$ID3 <- rep(2:1, c(6,3))
require(reshape2)
df.m <- melt(df, id.var=c("X", "Y"))
df.m$grp <- gl(3, 9)
df.m$value <- factor(df.m$value)

ggplot(data = df.m, aes(x = X, y = Y)) + geom_point(aes(colour = value)) + 
       facet_wrap(~ grp) + scale_colour_manual(values = c("blue", "black"))

ここに画像の説明を入力してください

異なるグループ内に同様のポイントがあるため、そのグループの一部の色が次のグループの色で上書きされることに注意してください。例:(1,6)は最初のファセットでは青である必要がありますが、ID = 3には(1,6)があるため、青から黒に置き換えられます。

于 2013-02-25T16:52:26.013 に答える
2

これは機能するはずです:

ggplot(trajectories, aes(x=X, y=Y)) + 
  geom_point(color = ID) 

これにより、IDごとに色が付いた散布図が作成されます。1色だけの散布図が必要な場合は、color = idビットを省略してください。

特定のIDの領域をシェーディングするには、ここからいくつかのインスピレーションを引き出すことができます。

RまたはMatlabでそれぞれの輪郭を確認できるように、2つの密な散布図をオーバーレイするにはどうすればよいですか?

基本的に、サブグループの周りに凸包を計算し、その周りにポリゴンを描画します。

于 2013-02-25T16:05:27.107 に答える
1

ベースプロットでは、次のようなことができます。

  par(mfrow=c(length(unique(ID)),1))
    for(i in unique(ID)){ plot(X,Y,col=as.numeric(ID==i)+1)}

ここに画像の説明を入力してください

オーバープロットが問題だった場合は、jitter()または透明色を追加できます。

于 2013-02-25T17:01:07.660 に答える