2

そこからプロットを(df1)生成した次のデータフレーム があります。geom_tile

X Y Z
1 1 0.343
5 4 0.134
10 6 0.564
20 8 0.532
40 9 0.235
46 12 0.425

そして、線を描くために使用したい別のデータフレームがあります(df2):

a b c     d
1 1 0.05 good
5 4 0.01 better
10 6 0.03 middle
20 8 0.1  bad
40 9 0.2  bad
46 12 0.22 bad

つまりa、 とXは同じであり、bYは同じ値です。

私がやりたいのは、 in の値に応じて、領域の周りに線を引くことgeom_tileです。したがって、それぞれの異なる領域には異なる色の線が表示されます (例: 赤が良い、青が良い、...)ddf2

私は使用しようとしましgeom_contourたが、問題は非常に醜い方法で線を描画し、座標を適切に指定できませんでした..

ノート

  • 一部の領域は直線ではない可能性があります
  • データフレームは大きくなります。これはアイデアを説明するためのテストデータです
4

1 に答える 1

2

まず、2 つの列に同じ値があるため、両方のデータ フレームをマージすることをお勧めします。

 df.new<-merge(df1,df2,by.x=c("X","Y"),by.y=c("a","b"))
 df.new
   X  Y     Z    c      d
1  1  1 0.343 0.05   good
2 10  6 0.564 0.03 middle
3 20  8 0.532 0.10    bad
4 40  9 0.235 0.20    bad
5 46 12 0.425 0.22    bad
6  5  4 0.134 0.01 better

次に、Z (必要に応じて)aes()と. タイルの周りの線がより見やすくなります。fill=color=dsize=2geom_tile()

 ggplot(df.new,aes(X,Y,fill=Z,color=d))+geom_tile(size=2)

同様の結果は、データ フレームをマージしなくても達成できます。2 つのgeom_tile()呼び出し (データ フレームごとに 1 つ) を使用し、2 つ目geom_tile()(色が設定されている場合) に add fill=NAoutsideを使用する必要がありますaes()

ggplot()+geom_tile(data=df1,aes(X,Y,fill=Z))+
         geom_tile(data=df2,aes(a,b,color=d),size=2,fill=NA)

ここに画像の説明を入力

于 2013-04-10T09:35:15.997 に答える