1
我正在研究一小段代碼,該代碼創建一個由多個獨立圖形組成的圖形,每個圖形顯示一個圖形,顯示縱向數據。對於視覺目的,我使用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)
感謝您的啓動。我的問題是「plyr :: d_ply(data1,」ID「,plot_one)」通過ID遍歷整個數據集,似乎沒有機會要求它停止並執行「plot()」 – marcel
您可以致電數據集上的'plyr :: d_ply()'首先通過'ID'創建輸出,然後在20個批次上運行'plot_one()'? – gung