簡體   English   中英

帶循環的繪圖內有多個圖形

[英]Multiple graphs within plot with loop

如何使用循環在一個繪圖中獲取data.frame的每一列的圖形? 必須很容易就無法弄清楚。

樣本數據:

rdata <- data.frame(y=rnorm(1000,2,2),v1=rnorm(1000,1,1),v2=rnorm(1000,3,3),
                    v3=rnorm(1000,4,4),v4=rnorm(1000,5,5))

我嘗試了什么?

library(lattice)

p <- par(mfrow=c(2,2))
for(i in 2:5){
w <- xyplot(y~rdata[,i],rdata)
print(w)
}
par(p)

如果您不必使用lattice ,則可以只使用基本plot ,它可以根據需要工作。

p <- par(mfrow=c(2,2))
for(i in 2:5){
    plot(y~rdata[,i],rdata)
}
par(p)

在此處輸入圖片說明

如果要使用lattice查看此答案 萊迪思忽略par ,因此您必須做更多的工作才能實現所需的目標。

為了輕松排列一堆格子圖,我喜歡使用輔助函數print.plotlist 它具有layout=參數,其作用類似於基本圖形的layout()函數。 例如,您可以致電

rdata <- data.frame(y=rnorm(1000,2,2),v1=rnorm(1000,1,1),v2=rnorm(1000,3,3),
                    v3=rnorm(1000,4,4),v4=rnorm(1000,5,5))

library(lattice)
plots<-lapply(2:5, function(i) {xyplot(y~rdata[,i],rdata)})
print.plotlist(plots, layout=matrix(1:4, ncol=2))

要得到

在此處輸入圖片說明

否則,通常可以在print語句中使用split=參數將圖放置在設備的小節中。 例如,您也可以

print(plots[[1]], split=c(1,1,2,2), more=T)
print(plots[[2]], split=c(1,2,2,2), more=T)
print(plots[[3]], split=c(2,1,2,2), more=T)
print(plots[[4]], split=c(2,2,2,2))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM