带有循环的图中的多个图

时间:2014-07-11 12:11:24

标签: r

如何在一个带循环的图中获取每列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)

2 个答案:

答案 0 :(得分:3)

如果您不必使用lattice,则只需使用基础plot,它就可以按照您的意愿使用。

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

enter image description here

如果您想使用lattice,请查看此answer。格子忽略了par,所以你必须做更多的工作才能达到你想要的效果。

答案 1 :(得分:3)

为了轻松排列一堆格子图,我喜欢使用辅助函数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))

获取

enter image description here

否则,您通常会在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))