3

我正在寻找将点并行添加到三个不同地块的方法。

我有三个名为 的散点图s3d1s3d2并且s3d3在一个窗口中

layout(matrix(c(1,2,1,3),2, 2, byrow = TRUE))
s3d1<-scatterplot3d(mtcars[,3],mtcars[,4],mtcars[,5],main="common",pch=20)
s3d2<-scatterplot3d(mtcars[,3],mtcars[,4],mtcars[,5],main="common",pch=20)
s3d3<-scatterplot3d(mtcars[,3],mtcars[,4],mtcars[,5],main="common",pch=20)

如果我尝试添加点s3d1

s3d1$points3d(mtcars[,3],mtcars[,4],mtcars[,5],col="red")

点会去,s3d3但不会s3d1。我错过了什么?

更多信息:我在运行程序时获取数据点。因此,当我获得特定于该特定图的数据时,我需要为每个图添加点。

更新 :

也试过par()功能

par(fig=c(0,0.65,0,1), new=TRUE)
s3d1<-scatterplot3d(mtcars[,3],mtcars[,4],mtcars[,5],main="common",pch=20)
par(fig=c(0.7,1,0.5,1), new=TRUE)
s3d2<-scatterplot3d(mtcars[,3],mtcars[,4],mtcars[,5],main="common",pch=20)
par(fig=c(0,0.65,0,1), new=TRUE)
s3d1$points3d(mtcars[,3],mtcars[,4],mtcars[,5],col="red")

s3d1$points3d不向s3d1(甚至不向s3d2)添加新点。有任何想法吗 ?

4

1 回答 1

2

如果您points3d()通过尝试执行来查看的来源s3d1$points3d,您会发现它只是将点添加到假定已经打开的现有绘图中。换句话说,点/绘图不存储在 s3d1,2,3 对象中,而只是绘制到不同视图所需的转换信息。

所以,要做你想做的事,你只需要使用普通的图形设备命令。例如,dev.new将打开一个新的绘图窗口,并dev.set可以在活动窗口之间切换。您可以执行以下操作:

dev.new(); h1=dev.cur()
s3d1<-scatterplot3d(mtcars[,3],mtcars[,4],mtcars[,5],main="common",pch=20)
dev.new(); h2=dev.cur()
s3d2<-scatterplot3d(mtcars[,3],mtcars[,4],mtcars[,5],main="common",pch=20)
dev.new(); h3=dev.cur()
s3d3<-scatterplot3d(mtcars[,3],mtcars[,4],mtcars[,5],main="common",pch=20)
dev.set(h1)
s3d1$points3d(mtcars[,3],mtcars[,4],mtcars[,5],col="red")

另请?dev.new查看更多信息。

于 2011-12-13T16:39:51.090 回答