use*_*996 8 r map continuous heat ggplot2
我有一系列x和y坐标,每个坐标都附有距离.我想创建一个热图,显示x和y范围内每个点的平均距离作为热图.由于这些点不是以格子状的形状彼此均匀地间隔开,因此该方法需要某种平滑功能,该功能将数据聚类并计算附近的每个点的平均值,然后用颜色表示该平均值.
到目前为止,使用ggplot2,我只能找到类似stat_density2d和的方法geom_tile,它们只能用于显示点密度和表示均匀间隔的点(据我所知).
理想情况下,它将遵循与此图像相同的原则:

即使点的密度和位置不均匀,也基于附近的给定点分配颜色.
我不想像这个图像那样以矩阵形式创建热图: 
表格是用颜色编码的.相反,我想使用非均匀分布的x和y坐标创建连续热图,实际上,它显示数据被分成无限多个矩形的极限.这可能不是该函数使用的实际方法,但它提供了我正在寻找的一般概念.
以下是一些示例数据:
data=data.frame(x=c(1,1,2,2,3,4,5,6,7,7,8,9),
y=c(2,4,5,1,3,8,4,8,1,1,6,9),
distance=c(66,84,93,76,104,29,70,19,60,50,46,36))
Run Code Online (Sandbox Code Playgroud)
如何制作带距离的热图作为覆盖整个数字范围的色标,如第一个链接中提供的图?
任何帮助是极大的赞赏!
为了生成具有不规则间隔坐标的连续地图,首先需要对规则网格进行内插(这里使用interp包的功能akima):
require(akima)
data <- data.frame(x=c(1,1,2,2,3,4,5,6,7,7,8,9),
y=c(2,4,5,1,3,8,4,8,1,1,6,9),
distance=c(66,84,93,76,104,29,70,19,60,50,46,36))
resolution <- 0.1 # you can increase the resolution by decreasing this number (warning: the resulting dataframe size increase very quickly)
a <- interp(x=data$x, y=data$y, z=data$distance,
xo=seq(min(data$x),max(data$x),by=resolution),
yo=seq(min(data$y),max(data$y),by=resolution), duplicate="mean")
image(a) #you can of course modify the color palette and the color categories. See ?image for more explanation
Run Code Online (Sandbox Code Playgroud)

或者你可以使用,为绘图本身,功能filled.contour:
filled.contour(a, color.palette=heat.colors)
Run Code Online (Sandbox Code Playgroud)

这里有一个用户编写的函数,可以使用 ggplot2 生成热图:
http://www.r-bloggers.com/ggheat-a-ggplot2-style-heatmap-function/
以及他们的示例图像:

如果您想要的是像示例中那样的地形图,那么有很多工具可以实现这一点(只需在“地形图”下搜索即可。
最后,还有 isarithmic 地图,它只是表明,如果您想要合并一些平滑功能,则需要明确您想要做什么: http://dsparks.wordpress.com/2011/10/24/isarithmic-maps -舆论数据/
| 归档时间: |
|
| 查看次数: |
15476 次 |
| 最近记录: |