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

所以这个想法是aX是相同的 和bY相同的值。

我想做的是geom_tile根据 in 的值在区域d周围画一些线df2。所以在每个不同的区域都会有不同的颜色线,例如(好的是红色,更好的是蓝色,......)

我尝试使用geom_contour,但问题是它以一种非常难看的方式绘制线条,我无法以一种好的方式指定坐标..

笔记

  • 某些区域可能不在直线上
  • 数据框更大,这是一个测试数据来解释这个想法
4

1 回答 1

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=2ingeom_tile()将确保瓷砖周围的线条更清晰可见。

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

在不合并数据框的情况下也可以实现类似的结果 - 您应该使用两个geom_tile()调用(每个数据框一个),然后在第二个geom_tile()(设置颜色的地方)添加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 回答