2013-04-10 60 views
1

我有我生成geom_tile情節從它下面的數據幀(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 

這樣的想法是,aX是相同的並且bY是相同的值。

我想要做的是周圍繪製取決於ddf2價值geom_tile地區的一些線路。所以在每個不同的區域會有不同的顏色線,例如(好的是紅色的,好的是藍色的,...)

我試圖用geom_contour,但問題是它以非常醜陋的方式繪製線條,牛逼能在一個良好的方式來指定座標..

  • 一些地區可能不是直線
  • 數據幀是更大的,這是一個測試數據來解釋想法

回答

1

我建議,首先,將兩個數據幀合併在一起,因爲它們在兩列中具有相同的值。

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 

然後在aes()設置fill=爲Z(如有必要)和color=dsize=2geom_tile()將確保各地磚線條更好可見。

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

類似的結果也可以實現不合並數據幀 - 你應該使用兩個geom_tile()電話(每個數據幀)和第二geom_tile()(其中顏色設置)添加fill=NAaes()

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

enter image description here

+0

謝謝您的回答,而是將這項工作examle多個瓷磚在一起嗎?例如,數據的大組具有一個很好的價值,他們將被視爲一個矩形或正方形或whatever..besides我認爲,當我們沒有直線 – ifreak 2013-04-10 10:05:04

+0

因爲數據幀我有是爲我寫的更大,這將不起作用在的問題,geom_tiles太小,在某些情況下,我們有geom_tiles集羣是不直(rectangele或......),它可以是不可思議的形狀..這將吸引他們都圍繞着一個共同線?或每個geom_tile周圍有不同的輪廓? – ifreak 2013-04-10 10:19:40

+0

我已經試過了,它爲每個geom_tile不同的輪廓..這不正是我想要的.. – ifreak 2013-04-10 11:05:42