2013-07-01 35 views
4

我希望能夠使用R中的多個繪圖來跟蹤正在運行的模擬。最簡單的方法是創建一個多面板圖(在我的情況下,我只使用par(mfrow = c(2,2))) ,然後依次繪製四個地塊的每一個。問題是它必須每次完全重繪圖,每次函數到達最後一個(第四個)面板時,整個窗口都會重繪。我想要的是能夠轉回到例如第一個面板,然後繪製在以前的頂部的下一個點。如果這是單獨的窗口,我可以用dev.set()在它們之間改變,但是面板有類似的東西嗎?更改R中多面板圖中的繪圖面板

+0

'split.screen'有一些例子 – baptiste

+0

看來我可以做到這一點使用'split.screen()'之後'屏幕()'命令:HTTP:// stackoverflow.com/questions/3151207/plot-to-specific-plot-in-multiple-plot-window?rq=1 –

+1

也'mfg' in'?par' – baptiste

回答

4

如果您將繪圖設置爲最開始的最終尺寸,則可以使用par(mfg=在面板之間切換並添加到它們中。

一個例子:

pars <- c('plt','usr') 

par(mfrow=c(2,2)) 

plot(anscombe$x1, anscombe$y1, type='n') 
par1 <- c(list(mfg=c(1,1,2,2)), par(pars)) 
plot(anscombe$x2, anscombe$y2, type='n') 
par2 <- c(list(mfg=c(1,2,2,2)), par(pars)) 
plot(anscombe$x3, anscombe$y3, type='n') 
par3 <- c(list(mfg=c(2,1,2,2)), par(pars)) 
plot(anscombe$x4, anscombe$y4, type='n') 
par4 <- c(list(mfg=c(2,2,2,2)), par(pars)) 

for(i in 1:11) { 
    par(par1) 
    points(anscombe$x1[i], anscombe$y1[i]) 
    Sys.sleep(0.5) 
    par(par2) 
    points(anscombe$x2[i], anscombe$y2[i]) 
    Sys.sleep(0.5) 
    par(par3) 
    points(anscombe$x3[i], anscombe$y3[i]) 
    Sys.sleep(0.5) 
    par(par4) 
    points(anscombe$x4[i], anscombe$y4[i]) 
    Sys.sleep(0.5) 
} 
+0

謝謝!這比引用問題中的答案更有用,它表明使用split.screen() - 但split.screen()具有奇怪和未識別的行爲,如果我循環回到頂部(參考幫助文件)。我陷入了使用mfg時座標系統混亂的問題,但這個答案通過爲每個plot保存par來很好地解決了這個問題。 –