2

3D 散布図に小さい立方体/メッシュ (辺の長さを指定) を追加しようとしています。立方体を原点に配置したいと思います。どうすればそれを行うことができますか?私は cube3d() をいじりましたが、立方体を正しく配置したり、メッシュにしたりすることができないようです (そのため、含まれているデータポイントを確認できます。ここに私が持っているものがあります:

library(rgl)
x <- runif(100)
y <- runif(100)
z <- runif(100)
plot3d(x,y,z, type="p", col="red", xlab="x", ylab="y", zlab="z", site=5, lwd=15)
4

2 に答える 2

2

cube3dx:[-1,1]; にまたがる立方体を表すリスト オブジェクトをデフォルトで返す (ただしプロットはしない) 関数があります。y:[-1,1]; z:[-1,1]。側面に色を適用すると、デフォルトでベタになります。側面を「アルファ」で透明にする必要があります (「 」を参照?rgl.materials)。したがって、使用したプロットから始めると、次のようになります。

library(rgl)
x <- runif(100)
y <- runif(100)
z <- runif(100)
plot3d(x,y,z, type="p", col="red", xlab="x", ylab="y", zlab="z", site=5, lwd=15)
c3d <- cube3d(color="red", alpha=0.1)  # nothing happens yet
c3d   # Look at structure
shade3d(c3d)   # render the object

これにより、プロットが上記の透明な赤い立方体のデフォルトの寸法に拡張されます。頂点は、$vb 要素の最初の 3 行の xyz 位置にあります。

c3b$vb
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,]   -1    1   -1    1   -1    1   -1    1
[2,]   -1   -1    1    1   -1   -1    1    1
[3,]   -1   -1   -1   -1    1    1    1    1
[4,]    1    1    1    1    1    1    1    1

頂点の 1 つが原点にある別の立方体を作成するために、考えられる最も簡単な方法は、すべての -1 を 0 に設定することでした。

 c3d.origin <- cube3d(color="red", alpha=0.1)
 c3d.origin$vb [c3d.origin$vb == -1] <- 0
 shade3d(c3d.origin)
 rgl.snapshot("cubes3d.png")

ここに画像の説明を入力

于 2013-08-10T15:18:28.083 に答える
0

これは私がさまざまな目的のために持っていたものです。それはあなたを始めるはずです。

box <- data.frame(
    x = c(1, -1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, 1, 1, 1, -1, 1, -1, -1, -1, -1, -1, -1, -1),
    y = c(1, 1, 1, 1, 1, -1, 1, -1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, 1),
    z = c(1, 1, 1, -1, 1, 1, -1, -1, -1, -1, 1, -1, 1, -1, 1, 1, -1, -1, -1, 1, 1, 1, -1, -1))
segments3d(box$x, box$y, box$z, line_antialias = TRUE, col = "blue")
points3d(0,0,0, col = "red", size = 5, point_antialias = TRUE)
于 2013-08-10T14:02:03.553 に答える