【问题标题】:How to create heat map along two dimensions based on data frame in R如何根据R中的数据框沿二维创建热图
【发布时间】:2020-03-20 10:45:53
【问题描述】:

我有一个包含 3 列的数据框。第一个列确定第三列的值,我想通过使用热图来可视化这种关系。我的计划是将数据框初始化为一个矩阵,第 1 列作为行名,第 2 列作为列名,第 3 列作为矩阵的值。不过,我正在努力使这项操作发挥作用。你能帮我完成这个转换,还是有更有效的方法?

【问题讨论】:

  • 请查看如何创建reproducible example。请发布您的数据(使用dput)。你试过什么代码?您收到了哪些错误消息?

标签: r matrix heatmap


【解决方案1】:

您可以尝试在您的值之间进行插值,并绘制结果对象:

# generate data
set.seed(42)
n <- 20
x <- runif(n, min = 10, max = 20)
y <- runif(n, min = 10, max = 20)
df <- data.frame(x = x, y = y)
df$z <- 2*x^2 + 0.1*y^3

# interpolate between data points
library(akima)
Field <- with(df, interp(x = x, y = y, z = z, duplicate = "strip"))

# plot
op <- par(mar = c(4,4,1,1))
image(Field)
points(y ~ x)
par(op)

【讨论】:

  • 感谢您的回答!虽然这似乎适用于少量数据,但一旦我使用更多行数,就会遇到以下错误:“interp.old 中的错误(x, y, z, xo, yo, ncp = 0, extrap = FALSE , duplicate = duplicate, : duplicate data points: need to set 'duplicate = ..' >
  • 我认为您需要做的就是将duplicate = "strip" 添加到您对interp 的呼叫中。我编辑了我的答案。如果您有重复的 x 和 y 组合,则会引发此错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-22
  • 1970-01-01
  • 2016-08-14
  • 2016-04-30
  • 1970-01-01
  • 2016-02-18
相关资源
最近更新 更多