2013-07-01 36 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来很好地解决了这个问题。 –