R中的真正热力图

5

我希望在R中制作一个真正的热力图,就像天气地图一样,只不过我的数据要简单得多。

考虑以下这个三维数据:

x <- c(1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4)
y <- c(1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5)
z <- rnorm(20)

这里需要展示的是一个离散型的热力图,z值代表颜色。

下面是一个展示数据的离散型热力图: enter image description here

如何制作一张光滑的热力图,让整个二维空间都被基于z值平滑填充的颜色所覆盖。

请提供样例代码,不要只给链接,那样可能会更加混淆我,而且我可能已经访问过该网站了。谢谢 :)


有没有办法让这个配色方案成为默认包中的一部分? - Rodrigo
2个回答

14

使用以下方法:

akima包中的interp函数

fields包中的image.plot函数

x <- c(1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4)
y <- c(1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5)
z <- rnorm(20)

library(fields)
library(akima)

s <- interp(x,y,z)
image.plot(s)

2
另一种绘图选项是使用ggplot2中的geom_tile几何形状。 - Paul Hiemstra

2

fields包中的smooth.2d功能很好用(而且对于更多的输入点来说比akima包中的interp函数快得多)。

library(fields)

x <- c(1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4)
y <- c(1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5)
z <- rnorm(20)

s = smooth.2d(z, x=cbind(x,y), theta=0.5)
image.plot(s)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接