6

私は直線の方程式を持っています

y=平方(c+x^2)

私の平面がxy平面に垂直で、上記の線が2つの平面の交線になるように、3D散布図に平面を追加したいと思います。

どうすればいいですか?plane3d の仕組みがよくわかりません。http://svitsrv25.epfl.ch/R-doc/library/scatterplot3d/html/scatterplot3d.htmlを読みました

しかし、まだわかりません。

4

2 に答える 2

5

これはあなたが探しているものかもしれません:

library(scatterplot3d)
# y=sqrt(a+x^2) with x in (-0.5,0.5), z in (0,1) and a=0
a <- 0
x <- rep(seq(-0.5, 0.5, length = 200), each = 200)
y <- sqrt(a + x^2)
z <- rep(seq(0, 1, length = 200), 200)
scatterplot3d(x, y, z, highlight.3d = TRUE, pch = 20)

ここに画像の説明を入力してください

編集:これらの他のポイントをどのように追加したかを確認するのに役立ちますが、2番目の例を?scatterplot3d

  temp <- seq(-pi, 0, length = 50)
  x2 <- c(rep(1, 50) %*% t(cos(temp)))
  y2 <- c(cos(temp) %*% t(sin(temp)))
  z2 <- c(sin(temp) %*% t(sin(temp)))

今、私たちが得る他のものと組み合わせxx2同じことをします:

scatterplot3d(c(x,x2), c(y,y2), c(z,z2), highlight.3d = TRUE, pch = 20)

ここに画像の説明を入力してください

于 2012-11-25T14:52:57.227 に答える
2

前の回答に加えて、3-D 散布図を作成したら、モデルを作成し、scatterplot3d()コンテナー内にネストされた関数を使用して解析することで、それに平面を追加できます。次のようになります。

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

このようなコンテナー内に関数を含めるのは非常に奇妙な構文ですが、これは機能し、次のような結果が得られます (点線の平面が立方体の中心近くに表示されます)。

中心を通る平面の 3 次元散布図

1 つまたは複数の平面を手動で作成する場合は、ここに再投稿した 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")

これにより、手動指定によって平面が生成されます。

ここに画像の説明を入力

于 2015-10-16T22:18:00.687 に答える