【发布时间】:2019-12-18 16:43:24
【问题描述】:
我有由 (x,y,z) 值组成的数据,我想将其绘制为 ggplot2 中的热图。但是,这些点的间距不均匀(即 x 和 y 数据点不能很好地落在规则网格上),这会阻止数据正常显示。我发现this 发布了关于类似问题的帖子,他们建议使用interp 函数将数据插入到均匀间隔的网格中。我在下面包含了一些示例代码来完成此操作
library(akima)
data <- data.frame("x" = c(1, 3, 5), "y" = c(-1, 2, 8), "z" = c(5, 1, 2))
resolution <- 0.1
a <- interp(x=data$x, y=data$y, z=data$z,
xo=seq(min(data$x),max(data$x),by=resolution),
yo=seq(min(data$y),max(data$y),by=resolution), duplicate="mean")
结果变量a可以使用image函数自动显示,但我想使用ggplot2。我无法理解 a 的结构 - 它似乎是一个列表列表,但每个列表的长度不同,我不确定如何将其转换为适合 ggplot2 的形式。我无法在interp 的文档中找到答案。有人可以解释如何重铸 a 以使其可以使用 ggplot2 绘制吗?
【问题讨论】: