使用R中的lapply在网格上生成多个点阵图

时间:2013-05-20 02:56:36

标签: r plot grid-layout lattice lapply

如何将多个点阵图绘制到单个点阵图上,其中使用lapply函数生成图?

以下是我使用内置mtcars数据集到目前为止所尝试的内容的演示。

require(lattice)

response <- c("cyl","disp","hp","drat")

par(mfrow=c(2,2))

lapply(response, function(variable) {
  print(xyplot(mtcars$mpg ~ mtcars[variable]))
})

这产生了所需的图。然而,它似乎忽略了par(mfrow=c(2,2))指令并分别绘制每个图。

3 个答案:

答案 0 :(得分:3)

如果您确实不想使用晶格的内置构面或视口选项,则可以使用以下内容复制par(mfrow)的行为,

require(lattice)

response <- c("cyl","disp","hp","drat")

# save all plots in a list
pl <- lapply(response, function(variable) {
  xyplot(mtcars$mpg ~ mtcars[variable])
})

library(gridExtra)
# arrange them in a 2x2 grid
do.call(grid.arrange, c(pl, nrow=2))

答案 1 :(得分:1)

您的示例不是lattice的使用方式(grid更合适)。

以下是lattice解决方案:

xyplot(mpg ~ cyl+disp+hp+drat,
       data=mtcars,
       groups=cyl+disp+hp+drat,
       scales=list(relation="free"),
       col="blue"
)

enter image description here

答案 2 :(得分:0)

this page上的多重绘图函数是我多次使用以在一个页面上获取多个绘图对象的东西。