Ire*_*ene 6 r ggplot2 ggmap gstat kriging
我想在ggmap上绘制热图.
library(ggmap)
turku<-get_map('turku', zoom=13)
turkumap<-ggmap(turku, extent="device", legend="topleft")
turkumap
turkumap+geom_density2d(mapping=aes(x = lon, y = lat),data = test, )
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
Error in (function (x, y, h, n = 25, lims = c(range(x), range(y))) :
bandwidths must be strictly positive
Run Code Online (Sandbox Code Playgroud)
测试变量是:
test
lon lat var1.pred
1 22.25320 60.4314 -67.04862
2 22.25332 60.4314 -67.07793
3 22.25344 60.4314 -67.11007
4 22.25356 60.4314 -67.14517
5 22.25368 60.4314 -67.18336
6 22.25379 60.4314 -67.22478
7 22.25391 60.4314 -67.26956
8 22.25403 60.4314 -67.31783
9 22.25415 60.4314 -67.36973
10 22.25427 60.4314 -67.42537
Run Code Online (Sandbox Code Playgroud)
建议?变量测试有更多的条目,我想绘制的是kriging的结果,通过gstat库中的函数krige获得.
有没有更好的方法呢?
我对不同的解决方案持开放态度
你遇到的问题是lat价值都是一样的.这意味着lat方向的方差为零,因此无法计算核密度估计的带宽
你可以硬编码带宽,
turkumap + geom_density2d(mapping=aes(x = lon, y = lat),
data = test, h=0.01)
Run Code Online (Sandbox Code Playgroud)
但在你的情况下,我建议不要使用geom_density2d这个特定的数据集.也许只是绘制积分?