如何生成基于值的密度地图,而不是R中的点数量?

Mat*_*ula 5 r ggplot2 ggmap

我正在使用以下数据集:

head(trip_3)
  TIP     LON    LAT
1   0    -73.866 40.741
2   10.0 -73.906 40.707
3   1.2  -73.706 40.738
4   2.0  -73.946 40.640
5   0    -73.946 40.625
6   1.5  -73.986 40.602
Run Code Online (Sandbox Code Playgroud)

我能够生成以下地图来呈现具有高和低平均小费值的点: 在此输入图像描述

我已经用以下代码实现了它:

nyc_map + geom_point(data=as.data.frame(trip_3), aes(x=LON, y=LAT, fill=TIP), size=3, 
shape=21, alpha=0.6, position="jitter") + scale_fill_continuous(low="white", high="#FF0033")
Run Code Online (Sandbox Code Playgroud)

现在我想要一张显示具有高和低提示的区域(密度)但不使用点的地图 - 我想要得到这样的东西: 在此输入图像描述

但它计算的是积分数量,而不是基于小费值。如果能实现我之前描述的目标那就太好了。这是我使用的代码:

nyc_map + stat_density2d(aes(x=LON, y=LAT, fill = ..level..), size=3,
bins=10, data=as.data.frame(trip_3), geom="polygon")
Run Code Online (Sandbox Code Playgroud)

如何使 stat_密度2d 依赖于 TIP,而不是点数?

Dyl*_*oss 2

尝试geom_contour。它允许您将第三个变量指定为 z。geom_contour 将像地形图一样在相等的 TIP 区域绘制线条。

nyc_map + geom_contour(aes(x=LON, y=LAT, z=TIP, fill=TIP), color="white")
Run Code Online (Sandbox Code Playgroud)

如果您希望它在线条之间产生阴影,您也可以使用 stat_contour。

nyc_map + stat_contour(aes(fill=..level..), geom="polygon", binwidth=250, alpha=.5)
Run Code Online (Sandbox Code Playgroud)

这是一个例子。白线是由 geom_contour 绘制的。阴影由 stat_contour 完成。

轮廓示例图像