2011-12-13 58 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)'等。 –

相關問題