4

我有一个 3d 散点图,如下所示:

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

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

4

3 回答 3

4

虽然我还没有测试过,但我认为你应该从尝试开始,points3d而不是plot3d......而且仅供参考par(new=FALSE),对情节没有任何影响rgl,只有基础情节。

于 2012-11-07T20:08:57.593 回答
4

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

plot3d(X[want], Y[want], Z[want], col = 'black', add = TRUE)
于 2015-07-02T11:24:05.403 回答
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')  
于 2016-09-12T09:06:02.230 回答