7

data.frameがあり、次datを使用してデータのグループをプロットしたい場合facet_wrap

dat <- data.frame(x = runif(150), y = runif(150), z = letters[1:15])

ggplot(dat[dat$z %in% letters[1:9], ], aes(x, y)) +
  geom_point() +
  facet_wrap( ~ z, ncol = 3, nrow = 3)

これは見栄えがよく、期待どおりに機能します。ただし、次のセットをz新しいプロットにプロットすると、次のようになります。

ggplot(dat[dat$z %in% letters[10:15], ], aes(x, y)) +
  geom_point() +
  facet_wrap( ~ z, ncol = 3, nrow = 3)

3行3列ではなくなりました。を使用してプロットのアスペクト比を修正できますがopts(aspect.ratio = 1)、以前のプロットとは異なるレイアウトになっています。6または1であっても、ページには常に9つのプロットがあるように表示したいのですが、それは可能ですか?

4

3 に答える 3

9

これを試して、

library(ggplot2)
library(plyr)
library(gridExtra)

dat <- data.frame(x=runif(150), y=runif(150), z=letters[1:15])

plotone = function(d) ggplot(d, aes(x, y)) + 
  geom_point() + 
  ggtitle(unique(d$z))

p = plyr::dlply(dat, "z", plotone)
g = gridExtra::marrangeGrob(grobs = p, nrow=3, ncol=3)
ggsave("multipage.pdf", g)
于 2012-06-13T20:01:32.993 に答える