11

データの探索的分析を行っており、ggplot を使用して複数のグラフィックをプロットする必要があります。グラフィックスの量は非常に多く (206 ステーション)、必要な非常に多くのページにわたって 1 ページあたり 8 行ではなく 1 列でプロットしたかったのです。viewport や grid.arrange などの関数を認識していますが、この場合、それらを機能させることができません。layout() も par(mfrow=c(8,1)) も ggplot では機能しないことに既に気付きましたが、スタックしているコードの一部を以下に送信します。どんな助けでも大歓迎です!

pdf('test.pdf', width=21, height=27)
par(mfrow=c(8,1))
for(i in levels(tab$Station))
{

print(ggplot(tab[tab$Station==i], aes(x=Date)) +
  geom_line(aes(y=Tmin), col="blue", size=0.1) + 
  geom_line(aes(y=Tmax), col="red", size=0.1) + 
  geom_text(aes(x=as.Date('2010-01-01'), y=45), label=i) +
  ylim(0, 45) + 
  scale_x_date(labels = date_format("%Y")) +
  theme_bw() +
  theme(
    plot.background = element_blank()
    ,panel.grid.major = element_blank()
    ,panel.grid.minor = element_blank()
    ,panel.border = element_rect(color = 'black')
    ,panel.background = element_blank()

  )
)

}

dev.off()
4

4 に答える 4

11
library(plyr)
library(gridExtra)

p = ggplot(tab, aes(x=Date)) +
       geom_line(aes(y=Tmin), col="blue", size=0.1)

plots = dlply(tab , "Station", `%+%`, e1 = p)
ml = do.call(marrangeGrob, c(plots, list(nrow=8, ncol=1)))
ggsave("multipage.pdf", ml)

テストされていません。

于 2013-09-28T04:31:28.907 に答える
1

ファセットが最適な方法かもしれません。ページごとに必要なファセット付きミニプロットの数を決定し、必要な回数ループして、png または pdf を生成します。したがって、200 個のデータ項目があり、ページごとに 50 個、横に 5 個、下に 10 個のファセットが必要な場合は、200/50 = 4 回の反復をループするだけです。粗雑ですが、うまくいくはずです。

ファセット

library(ggplot2)

ii <- 7
nn <- 49

mydf <- data.frame(date = rep(seq(as.Date('2013-03-01'),
                       by = 'day', length.out = ii), nn),
                   value = rep(runif(nn, 100, 200)))

mydf$facet.variable <- rep(1:nn, each = ii)

p <- ggplot(mydf, aes(x = date, y = value)) +
    geom_line() +
    facet_wrap(~ facet.variable, ncol = ii)

print(p)
于 2013-09-27T22:52:18.533 に答える
0

残念ながら、mfrowでは動作しませんggplot2this oneまたはthis oneのような他の方法を使用するか、ネイティブplot関数を使用する必要があります。

たぶん、ファセットを使用して 8 つのプロットを 1 ページにまとめてから、2 番目のリンクを使用して複数のドキュメントに入れることができます...

于 2013-09-27T22:03:33.287 に答える