r - 绘制没有插值的 3D 表面?

标签 r plot interpolation rgl geometry-surface

我有以下数据:

library(rgl)
x <- c(rep(1,6),
       rep(3,6),
       rep(6,6),
       rep(9,6),
       rep(12,6))
y <- c(1.35,1.39,1.48,1.29,1.35,1.32,
       NA,1.5,1.44,1.6,1.5,1.41,
       NA,NA,1.72,1.56,1.6,1.55,
       NA,NA,NA,1.95,1.9,1.75,
       NA,NA,NA,NA,2.05,1.95)
z <- rep(1:6,5)
open3d()
plot3d(x,y,z, type = 'n')
lines3d(x,y,z)

如我所料,它正在 3d 中绘制线条。 但我无法让它绘制 surface3d。 因为我已经阅读了一些线程,所以我可能需要插入我的数据。 RGL 文档没有很好地涵盖这个主题。我试过 akima 但它不接受 NA。 我想链接线以线性方式创建表面。我知道 NA,所以我预计对于更大的 x(更多 NA),该区域的表面会减少。 我需要执行插值吗?如果是,如何对我的示例数据执行此操作? 如果不是,如何在我的示例数据上实现 surface3d? 谢谢

最佳答案

解决方案来自这个线程: Making a wireframe plot from an x,y,z data.frame 下面的代码适用于上面提供的示例数据(只需切换 x->y,y->z,z->x)

zmat <- matrix(data = z, nrow = 6, ncol = 5, byrow = FALSE)
surface3d(x = 1:6, y = c(1,3,6,9,12), z = zmat, alpha = 0.4, colour = 'blue')

关于r - 绘制没有插值的 3D 表面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17132283/

相关文章:

python - 类似于 scipy.interpolate.griddata?

OpenGL gluLookAt() 未按预期工作

r - 无法更改 ggplot2 中的图例

Julia:如何将非均匀间隔的二维数据插入到网格上?

r - 动态子集数据表

r - 如何在R的heatmap.2中添加水平分隔符

r - 在一组中查找不在另一组中的值对

r - 获取同一调用中每组的 .SD 平均值和总数?

ios - 核心图 - 绘制长日期和整数

r - ggvis:将多个数据集合并在一个图中