我正在尝试重现这个图,即顶部有点和线的表面 .
为了使这个例子可以重现,我使用了数据
library(data.table)
library(lattice)
library(latticeExtra)
surf
surf$z
with(surf, {
d
exp(-0.02 * d^2) * sin(d)
})
surf
pts
使用我使用的面板功能调整线框功能
wireframe(z ~ x * y, surf, aspect = c(1, .5),
screen = list(z=-160, x=-70),
scales = list(arrows = FALSE),
shade=TRUE,
shade.colors = function(irr, ref, height, w = 0.4){grey(w * irr + (1 - w)*(1 - (1 - ref)^0.4))},
light.source= c(0,10,10),
pts = pts,
panel.3d.wireframe =
function(x, y, z,
xlim, ylim, zlim,
xlim.scaled, ylim.scaled, zlim.scaled,
pts,
...) {
panel.3dwire(x = x, y = y, z = z,
xlim = xlim,
ylim = ylim,
zlim = zlim,
xlim.scaled = xlim.scaled,
ylim.scaled = ylim.scaled,
zlim.scaled = zlim.scaled,
...)
xx
xlim.scaled[1] + diff(xlim.scaled) *
(pts$x - xlim[1]) / diff(xlim)
yy
ylim.scaled[1] + diff(ylim.scaled) *
(pts$y - ylim[1]) / diff(ylim)
zz
zlim.scaled[1] + diff(zlim.scaled) *
(pts$z - zlim[1]) / diff(zlim)
panel.3dscatter(x = xx,
y = yy,
z = zz,
xlim = xlim,
ylim = ylim,
zlim = zlim,
xlim.scaled = xlim.scaled,
ylim.scaled = ylim.scaled,
zlim.scaled = zlim.scaled,
col="black",
type="l",
pch=19,
cex=1,
...)
})
要得到
我同意这不是很漂亮但它至少是一条线和一个表面的组合 . 无论如何,我不知道如何添加多行,因为在panel-argument中更改x将通过获得彼此不平行的行(R连接所有点)来产生有线结果 . 进一步如何在顶部添加积分?