我正在尝试在使用persp3D
(package plot3D
) 创建的 3D 表面上添加一个网格,但是我无法在不导致网格变形的情况下进行排序。
library(plot3D)
data("volcano")
volcano
是一个 3D 矩阵,可用于创建 3D 图,只需调用:
persp3D(z=volcano)
我打算做的是使用 3D 矩阵的维度创建一个新网格,然后将其添加到 3D 图中。
# new grid
x.seq <- seq(1, dim(volcano)[1], length = 20)
y.seq <- seq(1, dim(volcano)[2], length = 20)
# Visualize grid
plot(x=c(0,length(volcano[,1])), y=c(0,length(volcano[1,])), type='n')
abline(v=x.seq, h=y.seq)
我通过创建的新序列对矩阵进行子集化来接近它volcano
,然后在原始 3D 表面上绘制新的 3D 矩阵。
# New matrix using sequences created
mtx.sub <- volcano[time.seq, freq.seq]
# Plot new matrix on top of original surface
persp3D(z=volcano)
persp3D(z=amp.sub, border="black", facets=NA, add=T, colkey=list(plot=F))
尽管结果接近我的预期,但仔细观察会发现网格并没有真正位于现有表面之上,它是一个与原始表面不匹配的全新表面(这很明显,鉴于它是一个不同的矩阵)。
我正在寻找的是一种添加 2D 网格的方法,该网格将覆盖原始表面,类似于abline
3D 绘图。
我查看了plot3D
文档并在网上搜索,但没有一个解决方案适用于persp3D()
.
关于解决这个问题的任何想法?