在R中的“场”轮廓表面图中添加单个数据点

问题描述

我正在尝试使用薄板样条插值在R中创建3D曲面。到目前为止,我已经成功使用包字段创建了轮廓和线框图,并将其打包在一个函数中:>

TPS_wireframe <- function(DF,VarName1,VarName2,output) {
  Var1 <- DF[,VarName1]
  Var2 <- DF[,VarName2]
  tp.m <- as.matrix(data.frame(DF=Var1,DF=Var2))
  t <- Tps(x=tp.m,Y=DF$fitness,lambda=0.02691373)
  if (output=="contour") return(surface(t,xlab=VarName1,ylab=VarName2,zlab="fitness"))
  wfr.df <- expand.grid(x = Var1,y = Var2)
  wfr.df <- wfr.df %>% 
    mutate(z = as.vector(predict(t,wfr.df)))
  if (output=="wireframe") return(wireframe(z ~ x*y,data = wfr.df,shade = TRUE,perspective = TRUE,aspect = c(1,1),colorkey = FALSE,par.Box = list(col=0),col=1,zlab="fitness",ylab=VarName2))
}
TPS_wireframe(df,"tail.d","body.l","wireframe") # example usage

因此,我有一个数据框,我创建了一个TPS回归,然后使用预测创建了一个由插值数据组成的新数据框,从中我创建了一个曲面-在等高线图或线框中。我想将原始数据框中的数据点添加到最终绘图中。特别是,我想将它们添加到等高线图中,因为这可能更容易/更直观。

线框图示例:

Example wireframe plot

等高线图示例:

Example contour plot

如果您有兴趣,可以在Dryad https://datadryad.org/stash/dataset/doi:10.5061/dryad.cvdncjt1x上免费访问这些数据。不过,这与该问题无关。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)