2014-09-29 47 views
1

应该有一个简单的方法来处理这个问题,但我不知道。我用R的子图函数par(mfrow=c(5,5))绘制了多个数字(即25个数字)。例如,在绘制了10个数字后,我已经对第11个绘图做了一些错误,现在如果我想使用plot函数再次绘制它,则需要第12个子图的空间,这意味着整个子图结构会发生变化。我知道par(new=TRUE)会让我重新绘制第11位数字的顶部,但如果修改后的情节如此不同以至于重叠不起作用呢?这个想法是抹去第11位数字,然后重新绘制一遍。在绘制所有25个数字之后如何更改第一个绘图?在R的par()函数下替换一个绘图

+1

基础图形是添加剂。这意味着一旦画出了一些东西,除非你擦除整个设备,否则它不能被取消。我想你可以在前面的图上绘制白色的矩形,但是技术上没有“擦除”它。 – MrFlick 2014-09-29 03:05:38

+0

你是否“手工绘制”25个地块?你不使用脚本吗?只需要一个脚本,以par(new = TRUE)开始,创建25个图,然后您可以重新运行该脚本,直至获得所需的结果。 – MrGumble 2014-09-29 07:04:44

回答

0

可以使用screen功能家族,虽然我承认不是他们的爱好者。正如你所希望的那样,它只能用于独家par(mfrow=c(5.5))甚至layout(...)

话虽如此,完全有可能重画在屏幕上。对于实例:

split.screen(c(5,5)) 
for (scr in 1:25) { 
    screen(scr) 
    par(mar=rep(0,4)+0.1) 
    plot(0) 
} 
screen(7) 
par(bg='white') # necessary for some display types 
erase.screen() 
plot(2) 

(这当然不是一个美丽的例子,但它是功能)

通知的背景颜色(bg)白色的显式设置;有些显示器假定透明度,但不这样做似乎没有任何影响(即erase.screen()什么也不做)。

话虽如此,有许多现代和近现代的图形功能/库/包,做这个包而不是支持的事情。我还没有使用图像捕获机制(例如夹在png(file="...")dev.off()中的东西)对此进行测试。 注意事项