在geom_tile中的特定区域周围绘制线条

时间:2013-04-10 09:20:51

标签: r ggplot2

我有以下数据框(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是相同的值。

我想要做的是在geom_tile区域周围绘制一些线条,具体取决于ddf2的值。所以在每个不同的区域都会有不同的颜色线,例如(好的是红色,更好的是蓝色,......)

我试图使用geom_contour但问题是它以非常丑陋的方式绘制线条,我无法以良好的方式指定坐标。

注意

  • 某些区域可能不是直线
  • 数据框越大,这是一个解释这个想法的测试数据

1 个答案:

答案 0 :(得分: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

然后在aes()设置fill=为Z(如有必要)和color=dsize=2中的geom_tile()将确保瓷砖周围的线条更清晰可见。

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

在不合并数据框的情况下也可以实现类似的结果 - 您应该使用两个geom_tile()调用(每个数据帧一个),然后在第二个geom_tile()(设置颜色)中添加{{1} } fill=NA

aes()

enter image description here