我想在R中绘制热图,但我的数据文件是这样的
Lat, Long, Zip, Zvalue
我基本上需要在纬度和经度值之间进行插值,并根据z值绘制颜色
我该如何在R中实现这一点?
最终,我想得到这样的结果
包spatstat
是你的朋友!
http://www.spatstat.org/spatstat/
如果您的数据是一组事件(例如“在(x,y)发生了一起犯罪”),那么您可以使用核密度估计生成热力图。您可以在此处查看示例:https://github.com/drewconway/WikiLeaks_Analysis/blob/master/density.r
具体来说,是第72行。
如果您的z值是实数(根据您的问题可能是这种情况),则可以使用spatstat的smooth
函数进行插值,并返回一组由数据插值生成的像素。该函数使用高斯核进行插值。
另外,您还可以使用akima
包(由spatstat
作者推荐)对指定位置进行插值。它使用线性或基于样条的插值方法,似乎相当简单(尽管我没有使用过!)。
更一般地说,您正在尝试做的事情通常称为“克里金插值”,因此如果您在谷歌上搜索此内容,将会得到很多结果。例如,请参阅gstat
和geoR
包。
最后(也是非常重要的),您可以使用高斯过程来完成类似的操作。这实际上会给出一个关于可能插值的分布,考虑到您的数据。R软件包kernlab
有一个实现,但我不知道如何使用它。
Jeffrey Breen使用ggplot2和zipcode软件包制作了这种类型的图表:http://jeffreybreen.wordpress.com/2011/01/05/cran-zipcode/
那应该可以让你开始了。