6

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, )

私が得るエラーは次のとおりです。

 Error in (function (x, y, h, n = 25, lims = c(range(x), range(y)))  : 
 bandwidths must be strictly positive

テスト変数は次のとおりです。

  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

提案?変数 test にはさらに多くのエントリがあります。プロットしたいのは、gstat ライブラリの関数 krige によって取得されたクリギングの結果です。

それを行うより良い方法はありますか?

私は非常に異なる解決策に対してオープンです

4

1 に答える 1

6

問題は、lat値がすべて同じであることです。これは、lat方向の分散がゼロであることを意味するため、カーネル密度推定の帯域幅を計算できません。

帯域幅をハードコーディングできます

turkumap + geom_density2d(mapping=aes(x = lon, y = lat),
                 data = test, h=0.01)

しかし、あなたの場合geom_density2d、この特定のデータセットには使用しないことをお勧めします。おそらくポイントをプロットするだけですか?

于 2013-09-19T08:33:54.027 に答える