从R中的不规则x,y,z点内插v

时间:2019-02-27 00:56:31

标签: r 3d plotly interpolation 4d

我正在尝试使用R来插值不规则放置的3维处理x,y,z的响应值v。在这种情况下,我有50个唯一的3维点(实验中的处理)和一个响应变量。对于50个点中的每一个,我都有一个v值,但是我想在这50个点之间插入响应。根据我的理解,许多插值代码(例如,contour())都需要规则间隔的数据,但是我的处理方法在3D空间中根本不是规则间隔的。

真实数据框架如下:

head(df)  

  x      y        z       v     
14.200 27.20250 8.057316 2.427  
13.675 37.98000 7.874447 1.740   
13.700 24.64750 7.760348 3.637   
13.800 32.93833 7.711711 2.175   
13.775 30.17500 8.040487 2.498   
14.125 18.65750 7.658253 3.246  

到第50行。我已经使用ploy_ly()创建了以v着色的3D散点图,但是我想插值成功能响应形状或3D等高线图以填充点之间的空间。这也意味着我将不得不使用透明颜色对其进行着色,或者在切片中绘制等高线图。有什么想法吗?

可重现的数据集代码:

df:

df <- data.frame(matrix(ncol = 4,nrow=50))
colnames(df) <- c("x", "y", "z","v")
set.seed(5)
df$x <- rep(1:25, each=2)
df$y <- sample(40, size = nrow(df), replace = TRUE)
df$z <- sample(30, size = nrow(df), replace = TRUE)
df$v <- c(c(1:25),c(25:1))

3D图:

install.packages("plotly")
library(plotly)
plot_ly(x=df$x, y=df$y, z=df$z, type="scatter3d", mode="markers",color=df$v)%>%
  layout(
    scene = list(
      xaxis = list(title = "X"),
      yaxis = list(title = "Y"),
      zaxis = list(title = "Z")))

谢谢!

0 个答案:

没有答案