添加第二个3dplot

时间:2012-11-07 20:06:28

标签: r rgl

我有一个三维散点图,如下所示:

library(rgl)
N <- 10000

X <- rnorm(N,0,1)
Y <- rnorm(N,0,1)

Z <- X * Y

want <- Z >0 & X>0

palette <- colorRampPalette(c("blue", "green", "yellow", "red")) 
col.table <- palette(256)
col.index <- cut(Z, 256)
plot3d(X,Y,Z, col=col.table[col.index])
grid3d(c("x", "y", "z"))

这很好用。现在我想覆盖另一个情节,所以我尝试了这个:

par(new=F)
plot3d(X[want],Y[want],Z[want], col="black")

然而这失败了 - 它只是覆盖旧的情节。有没有办法覆盖新的情节?

3 个答案:

答案 0 :(得分:4)

虽然我没有对其进行测试,但我认为您应首先尝试points3d而不是plot3d ...而且FYI par(new=FALSE)对{{1}没有任何影响根本没有绘制基础图。

答案 1 :(得分:4)

一个非常简单的解决方案是使用add = TRUE参数:

plot3d(X[want], Y[want], Z[want], col = 'black', add = TRUE)

答案 2 :(得分:1)

它使用的是另一个包,但使用scatterplot3d包,您可以使用points3d属性添加点:

library(scatterplot3d)

# main scatterplot
s3d<-scatterplot3d(x1,y1,z1,color="black",
         type="l",box=FALSE,highlight.3d=F,
         xlab="x",ylab="y",zlab="z")

# add some points 
s3d$points3d(x2,y2,z2,col="red",pch=20)  

# add a line
s3d$points3d(x3,y3,z3,col="blue",type='l')