使用R在一个图中逐行绘制图形

时间:2014-07-13 12:48:59

标签: r lattice gridextra

示例数据:

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)
library(gridExtra)    
plot1 <- lapply(1:2, function(i) {bwplot(~rdata[,i],rdata)})
plot2 <- lapply(1:3, function(i) {bwplot(~rdata[,i],rdata)})
plot3 <- lapply(1:4, function(i) {bwplot(~rdata[,i],rdata)})


print(do.call(grid.arrange, c(plot1,plot2,plot3))) 

我想逐行绘制图形,以便在这种情况下plot1在第一行的1个绘图中显示仅2个图形,第2行3图形​​和第3行4图形。怎么做?

编辑:期望的输出:

enter image description here

1 个答案:

答案 0 :(得分:1)

升级评论以回答

不确定这是否与评论有很大改善,但可能更具可扩展性

# arrange list of grobs for each plot
l <- lapply(list(plot1, plot2, plot3), 
                      function(i) do.call(arrangeGrob, c(i, nrow=1, ncol=4)))

# plot
do.call(grid.arrange, l)