我有以下数据框(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
是相同的,b
和Y
是相同的值。
我想要做的是在geom_tile
区域周围绘制一些线条,具体取决于d
中df2
的值。所以在每个不同的区域都会有不同的颜色线,例如(好的是红色,更好的是蓝色,......)
我试图使用geom_contour
但问题是它以非常丑陋的方式绘制线条,我无法以良好的方式指定坐标。
注意 的
答案 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=d
。 size=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()