2012-11-25 8 views
5

に平面を追加、そのような私の平面ことxy平面に垂直であり、上に与えられた線は2つの平面の交線である。私はライン</p> <p>Y = SQRT(C + X^2)</p> <p>の式を有し、Iは、3D散布図に平面を追加するscatterplot3d

どうすればよいですか?私はplane3dのしくみをよく理解していません。私は読んだhttp://svitsrv25.epfl.ch/R-doc/library/scatterplot3d/html/scatterplot3d.html

しかし、それでもそれを取得しないでください。

+0

関連ではなく、重複:http://stackoverflow.com/q/6774777/636656 –

答えて

4

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

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) 

enter image description here

編集:あなたはこれらの他の点を追加したのかを確認するために役立つことが、私たちは第二の例を見てみましょうだろう?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ウィットを組み合わせますあなたは3-Dの散布図を作成したら、モデルを作成することによって、それに平面を追加することができ、前の回答に加えて

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

enter image description here

+0

どのように私はすでに存在散布図にその事を追加しますが、その上にポイントがありますか? – user1760348

+0

@ user1760348、それは今質問に答えますか? – Julius

1

:我々が得る他の人と同じように時間x2とやってあなたのscatterplot3d()コンテナ内にネストされた関数を使用してそれを解析します。それは、そのようなコンテナ内の機能を持っていることは非常に奇妙な構文ですが、それは動作しますが、あなたにこのような何か(点線面を与えることの中央付近に見える

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

:それは次のようになります。キューブ):

3-D scatterplot with plane through the center

手動で一つまたは複数の面を作成したい場合、私は私が-掲示再ウーヴェの方法here使用します。

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") 

これはマニュアル仕様による面生成:

enter image description here

関連する問題