我想在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将是彩色的。
以下是此数据的离散外观热图:
如何制作热图,使颜色平滑,并根据z值将完整的2d空间填充平滑的颜色。
请包含示例代码,而不仅仅是可能会让我更加困惑的链接,而且我可能已经访问过该网站了。谢谢:))
答案 0 :(得分:14)
使用以下内容:
interp
包中的 akima
image.plot
包
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)
library(fields)
library(akima)
s <- interp(x,y,z)
image.plot(s)
答案 1 :(得分:1)
smooth.2d
包中的 fields
做得很好(对于大量输入点,它比interp
包中的akima
要快得多。
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)