繁体   English   中英

将平面添加到scatterplot3d

[英]Adding a plane to scatterplot3d

x <-rnorm(500,50,2)
y <-rnorm(500,5,1)
z <-rnorm(500,6,1)

s3d <- scatterplot3d(x[z<6], y[z<6], z[z<6], zlim=range(z),  color="darkgrey", col.axis="blue",col.grid="lightblue",   main="scatterplot3d - 1", pch=20)
s3d$plane3d(6,0,0)
s3d$points3d(x[z>=6], y[z>=6], z[z>=6], pch=20)

上面的代码告诉我如何向3d散点图添加平面'z = 6'。

第一个问题是:我想知道如何添加一个平面,例如“ x = 3”或“ y = 2”。

R帮助文件说明

plane3d(Intercept, x.coef = NULL, y.coef = NULL, lty = "dashed", lty.box = NULL, ...). Instead of Intercept a vector containing 3 elements can be specified.

第二个问题是:我还想知道“具有3个元素的向量”而不是Intercept的作用以及x.coef和y.coef参数的作用是什么。

问题1:我将使用线性模型添加平面,如我在此所述以及程序包作者在小插图中所使用的:

plot3d <- scatterplot3d(x, y, z, ... )
model  <- lm(y ~ x + z)
plot3d$plane3d(model)

您可以手动指定xyz截距,但我不建议这样做,因为它会产生一些奇怪的行为。 您还可以使用用于点的函数构造复杂的网格曲面,但正如作者在插图中指出的那样:

请注意,scatterplot3d旨在生成散点图(而不是绘制表面),对于此目的并不是真正的用户友好,为此,我们通常宁愿使用R的persp函数。

问题2:具有三个元素的向量是xyz截距的容器。 您可以像上面使用s3d$plane3d(6,0,0)一样手动指定它们。 x和y系数似乎是用于将这两个变量映射到平面上的。

为了手动制作特定飞机,以下是Uwe本人的建议:

spd <- scatterplot3d(1:10, 1:10, 1:10)

# xy
spd$plane3d(0.3549896,0,0,lty="dotted")

# yz
x0 <- 5
xyz1 <- spd$xyz.convert(rep(x0, 6), rep(0, 6), seq(0, 10, by=2))
xyz2 <- spd$xyz.convert(rep(x0, 6), rep(10, 6), seq(0, 10, by=2))
segments(xyz1$x, xyz1$y, xyz2$x, xyz2$y, lty="dotted")

xyz1 <- spd$xyz.convert(rep(x0, 6), seq(0, 10, by=2), rep(0, 6))
xyz2 <- spd$xyz.convert(rep(x0, 6), seq(0, 10, by=2), rep(10, 6))
segments(xyz1$x, xyz1$y, xyz2$x, xyz2$y, lty="dotted")

# zx
y0 <- 6
xyz1 <- spd$xyz.convert(rep(0, 6), rep(y0, 6), seq(0, 10, by=2))
xyz2 <- spd$xyz.convert(rep(10, 6), rep(y0, 6), seq(0, 10, by=2))
segments(xyz1$x, xyz1$y, xyz2$x, xyz2$y, lty="dotted")

xyz1 <- spd$xyz.convert(seq(0, 10, by=2), rep(y0, 6), rep(0, 6))
xyz2 <- spd$xyz.convert(seq(0, 10, by=2), rep(y0, 6), rep(10, 6))
segments(xyz1$x, xyz1$y, xyz2$x, xyz2$y, lty="dotted")

首先使用它们的内置xyz坐标转换函数在与xyz空间中的网格匹配的规则间隔处对这些点进行采样,然后再映射它们之间的线段,从而生成网格:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM