[英]Add 3D abline to cloud plot in R's lattice package
我想在R的網格包中為一個雲散點圖添加一個3D基線。 這是我的數據的一個子集(3個變量都在0,1之間):
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角落面對)。 謝謝你的任何建議。
不雅,可能很脆弱,但這似乎有效......
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(...)
})
要記住的一件事是,這不會刪除隱藏的點/線,因此該線將位於所有點的前面或后面的所有點; 在這個(編輯過的)版本中, do.call(panel.cloud,L)
是第一個,因此這些點會do.call(panel.cloud,L)
該行而不是反之亦然。 如果你想隱藏線刪除,那么我相信rgl
是你唯一的選擇...非常強大但不是很漂亮,並且具有更原始的界面。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.