4

R の格子パッケージの雲の散布図に 3D アブラインを追加したいと考えています。これが私のデータのサブセットです(すべて0,1の間の3つの変数):

dat <- structure(c(0.413, 0.879, 0.016, 0.631, 0.669, 0.048, 1, 0.004, 0.523, 0.001, 
0.271, 0.306, 0.014, 0.008, 0.001, 0.023, 0.670, 0.027, 0.291, 0.709, 
0.002, 0.003, 0.611, 0.024, 0.580, 0.755, 1, 0.003, 0.038, 0.143, 0.214, 
0.161, 0.008, 0.027, 0.109, 0.026, 0.229, 0.006, 0.377, 0.191, 0.724, 
0.119, 0.203, 0.002, 0.309, 0.011, 0.141, 0.009, 0.340, 0.152, 0.545, 
0.001, 0.217, 0.132, 0.839, 0.052, 0.745, 0.001, 1, 0.273), .Dim = c(20L, 3L))

クラウド プロットは次のとおりです。

# cloud plot
trellis.par.set("axis.line", list(col="transparent")) 
cloud(dat[, 1] ~ dat[, 2] + dat[, 3], pch=16, col="darkorange", groups=NULL, cex=0.8, 
    screen=list(z = 30, x = -70, y = 0),
    scales=list(arrows=FALSE, cex=0.6, col="black", font=3, tck=0.6, distance=1) ) 

0,0,0 と 1,1,1 の間に(つまり、プロットの斜めに)灰色の破線を追加したいと考えています。「type="l", panel.3d.cloud=panel.3dscatter" を使用して点を線に変更できることはわかっていますが、これを使用してプロットに点/線を追加する方法がわかりません。

scatterplot3d を使用して達成したいことの例を次に示します。

# scatterplot3d
s3d <- scatterplot3d(dat, type="p", color="darkorange", angle=55, scale.y=0.7,
    pch=16, col.axis="blue", col.grid="lightblue") 

# add line 
s3d$points3d(c(0,1), c(0,1), c(0,1), col="grey", type="l", lty=2)

クラウド プロットでこれを行い、プロットを表示する角度を制御したいと考えています (scatterplot3d では、プロットの 0,0,0 コーナーを向くことができません)。提案をありがとう。

4

1 に答える 1

2

エレガントではなく、おそらく壊れやすいですが、これはうまくいくようです...

cloud(dat[, 1] ~ dat[, 2] + dat[, 3], pch=16, col="darkorange", 
        groups=NULL, cex=0.8, 
    screen=list(z = 30, x = -70, y = 0),
    scales=list(arrows=FALSE, cex=0.6, col="black", font=3, 
                tck=0.6, distance=1) ,
      panel=function(...) {
        L <- list(...)
        L$x <- L$y <- L$z <- c(0,1)
        L$type <- "l"
        L$col <- "gray"
        L$lty <- 2
        do.call(panel.cloud,L)
        p <- panel.cloud(...)
      })

注意すべきことの 1 つは、これは非表示のポイント/ラインの削除を行わないことです。そのため、ラインはすべてのポイントの前または後ろのどちらかに配置されます。この(編集された)バージョンでdo.call(panel.cloud,L)は、最初にあるため、ポイントがラインを覆い隠すのではなく、その逆になります。隠線の削除が必要な場合は、それrglが唯一の選択肢だと思います...非常に強力ですが、それほどきれいではなく、はるかに原始的なインターフェースを備えています。

于 2011-10-08T21:34:44.240 に答える