【问题标题】:How to open new plot window during plot如何在绘图期间打开新的绘图窗口
【发布时间】:2013-11-22 10:20:51
【问题描述】:

我正在编写一段代码,该代码创建一个由多个单独的图表组成的图,每个 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) 

【问题讨论】:

    标签: r plot


    【解决方案1】:

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

    【讨论】:

    • 感谢您的开始。我的问题是 "plyr::d_ply(data1, "ID", plot_one)" 按 ID 遍历整个数据集,似乎没有机会要求它停止并执行 "plot()"
    • 您能否在数据集上调用plyr::d_ply() 以先创建ID 的输出,然后以20 个批次运行plot_one()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-27
    • 2012-09-03
    • 2020-12-08
    • 2016-09-12
    • 2023-03-26
    • 1970-01-01
    • 2014-06-20
    相关资源
    最近更新 更多