如何在一个带循环的图中获取每列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)
答案 0 :(得分:3)
如果您不必使用lattice
,则只需使用基础plot
,它就可以按照您的意愿使用。
p <- par(mfrow=c(2,2))
for(i in 2:5){
plot(y~rdata[,i],rdata)
}
par(p)
如果您想使用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))
获取
否则,您通常会在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))