java 线框图,使用线框重现张量积图

我正在尝试重现这个图,即顶部有点和线的表面 .

f213b32f-665b-4201-88a8-850da092bccf.png

为了使这个例子可以重现,我使用了数据

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,

...)

})

要得到

885c569f-a5d6-4463-bdd2-753b8fc17427.jpg

我同意这不是很漂亮但它至少是一条线和一个表面的组合 . 无论如何,我不知道如何添加多行,因为在panel-argument中更改x将通过获得彼此不平行的行(R连接所有点)来产生有线结果 . 进一步如何在顶部添加积分?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值