2011-12-13 59 views
3

我正在寻找方法来并行添加点到三个不同的地块。如何将点并行添加到两个地块? (在R)

我有一个窗口

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) 

命名为s3d1s3d2s3d3三个分散地块如果我尝试添加点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)。有任何想法吗 ?

回答

2

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

Soo,要做你想做的事情,你只需要使用普通的图形设备命令。例如,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欲了解更多信息。

+0

对不起,我必须早些时候通知它:实际上,我使用layout()将所有三个图形绘制在一个窗口中。因此,使用dev.new()会打开一个不需要的新窗口 – 384X21

+0

Ohhhh ...感谢您的澄清! 'points3d'调用使用绘制的最后一个单元格,这是右下角的单元格。我认为最好的解决方案是从头开始每个周期的绘图。祝你好运! –

+0

@ user1029725是的,我发现'布局'最有用的时候,我只需要快速吐出一些情节。对于更多的自定义子图,我一直使用'par(mfrow)'等。 –

相关问题