gpt4 book ai didi

r - 在R中创建连续的热图

转载 作者:行者123 更新时间:2023-12-04 06:23:00 24 4
gpt4 key购买 nike

我有一系列x和y坐标,每个坐标都附加了一个距离。我想创建一个热图,将x和y范围内每个点的平均距离显示为热图。由于这些点在网格状形状中彼此间隔不均匀,因此该方法将需要某种平滑函数,该函数对数据进行聚类并计算附近每个点的平均值,然后用颜色表示该平均值。

到目前为止,使用ggplot2,我只能找到stat_density2dgeom_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))

我如何制作一个具有距离作为整个数字范围的色标的热图,就像提供的第一个链接中的图一样?

任何帮助是极大的赞赏!

最佳答案

为了生成具有不规则间隔的坐标的连续 map ,您首先需要内插规则网格(此处使用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

或者,您可以使用 filled.contour函数进行绘图:
filled.contour(a, color.palette=heat.colors)

关于r - 在R中创建连续的热图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11531059/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com