r-如何在绘图过程中打开新的绘图窗口



我正在编写一段代码,该代码创建一个由多个单独的图组成的图,每个ID一个,显示纵向数据。出于视觉目的,我使用par将每个图的图形数量限制为20个,但数据集中有20多个ID,因此我需要多个图。

当前问题:一旦代码超过第20个(或N*20个)ID,如何避免用新的绘图覆盖以前的绘图。我认为我需要使用plot.new(),但不清楚如何在中处理这一问题,也找不到以前的文章来解决这一问题。

我的代码:

# Create sample data by sampling
Start <- as.Date("2012-01-01")
End <- as.Date("2013-01-01")
data1 <- data.frame(ID = sort(rep(seq(64),3)), VisitDate = sort((Start + sample.int(End-Start, 192))), Count = rnorm(192, mean = 300, sd = 12), Treat =  sample(0:1, 192, replace = TRUE))
# calculate days elapsed since start date, by ID
data1$VisitDate <- with(data1,as.Date(VisitDate,format="%y-%b-%d"))
data1$Days <- unlist(with(data1,tapply(VisitDate,ID,function(x){x-x[1]})))
#Define plot function
plot_one <- function(d){
 with(d, plot(Days, Count, t="n", tck=1, main=unique(d$ID), cex.main = 0.8, ylab = "", yaxt = 'n', xlab = "", xaxt="n",  xlim=c(0,8), ylim=c(0,500))) # set limits
    grid(lwd = 0.3, lty = 7)
    with(d[d$Treat == 0,], points(Days, Count, col = 1)) 
    with(d[d$Treat == 1,], points(Days, Count, col = 2))
}
#Create multiple plot figure
par(mfrow=c(4,5), oma = c(0.5,0.5,0.5,0.5), mar = c(0.5,0.5,0.5,0.5))
plyr::d_ply(data1, "ID", plot_one) 

如果使用的是windows,则调用windows()。如果您使用的是Mac,则可以调用quartz()。这将打开一个新设备,以便您下次调用(例如)plot()时不会覆盖现有绘图。

最新更新