0

使用 ggplot2:

qplot(carat, price, data = diamonds) + facet_grid(cut ~ color ~ clarity)

不完全是我希望的。除了为每个清晰度级别生成单独的绘图网格之外,如何完成这样的事情,例如

qplot(carat, price, data = diamonds[diamonds$clarity=="SI2", ]) + facet_grid(cut ~ color)
qplot(carat, price, data = diamonds[diamonds$clarity=="VS1", ]) + facet_grid(cut ~ color)

等等。

使用演员表的东西会很完美。

4

2 回答 2

2

对于三个刻面变量,请尝试facet_wrap改用。

facet_wrap(~ cut + color + clarity)

我已经重读了这个问题。如果您实际上想要多个图(从措辞中并不清楚),那么只需遍历clarity.

for(clarity in levels(diamonds$clarity))
{
  p <- qplot(carat, price, data = diamonds[diamonds$clarity == clarity, ]) + 
    facet_grid(cut ~ color)
  print(p)
}

或者,如果你是for-loop-phobic,

l_ply(
  levels(diamonds$clarity),
  function(clarity)
  {
    qplot(carat, price, data = diamonds[diamonds$clarity == clarity, ]) + 
      facet_grid(cut ~ color)
  }
)

如果要打印到屏幕,请先打开历史记录。ggsave否则在你的循环中包含一个调用。

于 2013-05-24T07:52:51.790 回答
1

这是我要做的:

base = qplot(carat, price, data = diamonds) + facet_grid(cut ~ color)
lp = dlply(diamonds, "clarity", `%+%`, e1 = base)

library(gridExtra)
do.call(grid.arrange, lp) # all in one page

# or multiple pages (with layout passed to grid.arrange)
all = do.call(marrangeGrob, c(lp, ncol=2, nrow=1))
ggsave("multipage.pdf", all, width=12) 
于 2013-05-24T10:54:58.470 回答