2013-04-10 82 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