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

3 つのファセット変数については、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それ以外の場合は、ループに呼び出しを含めます。

于 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 に答える