仅在基于zipcodes的R中绘制热图

时间:2011-02-03 10:54:42

标签: r

我想在R中绘制热图,但我的数据文件是这样的

Lat, Long, Zip, Zvalue

我基本上需要在lat和long值之间进行插值,并根据zvalue

绘制颜色

我怎样才能在R

中做到这一点

我最终想得到这样的东西

enter image description here

3 个答案:

答案 0 :(得分:3)

Jeffrey Breen使用ggplot2和zipcode包完成了这种情节:http://jeffreybreen.wordpress.com/2011/01/05/cran-zipcode/

这应该让你开始

答案 1 :(得分:3)

包裹spatstat是你的朋友!

http://www.spatstat.org/spatstat/

如果您的数据是一组事件(例如“(x,y)的”犯罪发生在(x,y)),那么您可以使用内核密度估算来生成热图。你可以在这里看到一个例子:

https://github.com/drewconway/WikiLeaks_Analysis/blob/master/density.r

具体是第72行。

如果您的z值是实数值(可能是读取您的问题的情况),那么您可以使用spatstat的smooth函数,该函数使用高斯内核执行插值并返回一组像素通过插入数据生成。

或者,您可以使用akima包(根据spatstat作者的建议)在您指定的位置进行插值。它使用线性或基于样条的插值,看起来非常简单(虽然我没有经验!)。

更一般地说,你想要做的事情通常被称为“Kriging”,所以如果你为谷歌提供了很多结果。参见例如gstatgeoR个包。

最后(和FTW)你可以使用高斯过程来做同样的事情。这实际上会为您提供给定数据的可能插值分布。 R包kernlab有一个实现,虽然我不知道如何使用它。

答案 2 :(得分:2)

您可以查看ggplot案例研究竞赛获胜者here

的代码

作者使用geom_tile制作热图,图表标题为:休斯顿市中心暴力犯罪天气图