如何在R中创建缺少值的曲面图?

时间:2015-05-07 22:57:21

标签: r plot surface

我有一个带有以下值的示例5x5矩阵:

dat <- matrix(seq(1,13,0.5), nrow=5, byrow=TRUE)
dat[seq(2,25,2)] <- NA

 1 | NA |  2 | NA |  3
NA |  4 | NA |  5 | NA
 6 | NA |  7 | NA |  8
NA |  9 | NA | 10 | NA
11 | NA | 12 | NA | 13

我不能因为缺少值而使用例如persp3d()得到3D表面图。是不是有一种方法可以让R只是插值并仍然绘制它们?

1 个答案:

答案 0 :(得分:3)

虽然之前可能会提出这个问题,但我无法找到这种情况的简洁实例。试试这个,结果会传递给perspimage等......

#install.packages("akima")
library(akima)

nas <- !is.na(dat)
interp(
  row(dat)[nas],       #row index   - 'x' values
  col(dat)[nas],       #col index   - 'y' values
  dat[nas],            #height data - 'z' values
  xo=seq(1,nrow(dat)), #'x' values for output
  yo=seq(1,ncol(dat))  #'y' values for output
)

#$x
#[1] 1 2 3 4 5
# 
#$y
#[1] 1 2 3 4 5
#
#$z
#     [,1] [,2] [,3] [,4] [,5]
#[1,]  1.0  1.5  2.0  2.5  3.0
#[2,]  3.5  4.0  4.5  5.0  5.5
#[3,]  6.0  6.5  7.0  7.5  8.0
#[4,]  8.5  9.0  9.5 10.0 10.5
#[5,] 11.0 11.5 12.0 12.5 13.0