【问题标题】:Multiple graphs within plot with loop带有循环的绘图内的多个图形
【发布时间】:2014-07-11 20:51:16
【问题描述】:

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

【问题讨论】:

    标签: r


    【解决方案1】:

    如果您不必使用lattice,您可以只使用基本plot,它应该可以按您的意愿工作。

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

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

    【讨论】:

    • 谢谢,是的,我知道它适用于plot,但到目前为止我已经在 lattice 中完成了所有工作,因此现在无法更改为不同的布局/设置。我会看看你的参考。谢谢!
    【解决方案2】:

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

    得到

    否则,您通常在打印语句中使用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))
    

    【讨论】:

    • 我已经想通了,但这是我可以学习的不同方法。谢谢!
    猜你喜欢
    • 2018-09-06
    • 2020-02-17
    • 1970-01-01
    • 2019-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-16
    相关资源
    最近更新 更多