使用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)
等等。
使用演员表的东西是完美的。
答案 0 :(得分: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
- 循环恐怖,
l_ply(
levels(diamonds$clarity),
function(clarity)
{
qplot(carat, price, data = diamonds[diamonds$clarity == clarity, ]) +
facet_grid(cut ~ color)
}
)
如果要在屏幕上打印,请先打开历史记录。否则,请在循环中调用ggsave
。
答案 1 :(得分: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)