0

如何将多个格子图绘制到使用 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))指令并分别绘制每个图。

4

3 回答 3

3

如果您真的不想使用 lattice 的内置 facetting 或 viewport 选项,您可以复制以下行为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))
于 2013-05-20T19:52:56.593 回答
1

您的示例不是lattice打算如何使用(grid会更合适)。

这是一个lattice解决方案:

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

在此处输入图像描述

于 2013-05-20T03:06:56.753 回答
0

此页面上的 multiplot 功能是我多次使用的功能,可在一页上获取多个绘图对象。

于 2013-05-20T17:29:32.323 回答