私は直線の方程式を持っています
y=平方(c+x^2)
私の平面がxy平面に垂直で、上記の線が2つの平面の交線になるように、3D散布図に平面を追加したいと思います。
どうすればいいですか?plane3d の仕組みがよくわかりません。http://svitsrv25.epfl.ch/R-doc/library/scatterplot3d/html/scatterplot3d.htmlを読みました
しかし、まだわかりません。
私は直線の方程式を持っています
y=平方(c+x^2)
私の平面がxy平面に垂直で、上記の線が2つの平面の交線になるように、3D散布図に平面を追加したいと思います。
どうすればいいですか?plane3d の仕組みがよくわかりません。http://svitsrv25.epfl.ch/R-doc/library/scatterplot3d/html/scatterplot3d.htmlを読みました
しかし、まだわかりません。
これはあなたが探しているものかもしれません:
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)))
今、私たちが得る他のものと組み合わせx
てx2
同じことをします:
scatterplot3d(c(x,x2), c(y,y2), c(z,z2), highlight.3d = TRUE, pch = 20)
前の回答に加えて、3-D 散布図を作成したら、モデルを作成し、scatterplot3d()
コンテナー内にネストされた関数を使用して解析することで、それに平面を追加できます。次のようになります。
plot3d <- scatterplot3d(x, y, z, ... )
model <- lm(y ~ sqrt(c + x^2) + z)
plot3d$plane3d(model)
このようなコンテナー内に関数を含めるのは非常に奇妙な構文ですが、これは機能し、次のような結果が得られます (点線の平面が立方体の中心近くに表示されます)。
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")
これにより、手動指定によって平面が生成されます。