2017-11-06 23 views
1

私は、必要に応じて多数のpdfページに印刷するために、(ファセットに基づいて)複数のプロットを作成しようとしています。これらのプロットは、著者が単一の出版物の何年もの間に得た引用の数を表しています。ここで おもちゃセット:ggplot2、dlply:nページにプロットする

a = ggplot(data = Publications, aes(x = Year, y = Citations, label=Citations)) + 
    theme_minimal() + 
    geom_point()+ 
    theme(axis.text.y=element_blank()) 

最後に、私は私のファセット変数でサンプルを分割:

Publications <-data.frame(Year=c(1,2,1,2,3,4,5),Publication=c(rep("A"),rep("B"),rep("C"),rep("D"),rep("E"),rep("F"),rep("G")),Author=c(rep("John",2),rep("Michael",5)),Citations=c(5,6,4,7,2,3,8)) 

そうするために、私は一般的なプロットを作成し、次の「」ようにそれを割り当てる開始"作成者"をクリックし、以下のようにpdfに保存してください:

require(plyr) 
plots <-dlply(Publications, .(Author), function(x) a %+% x + 
       facet_wrap_paginate(Author ~ Publication, ncol = 1, nrow = 3)) 
pdf() 
plots 
dev.off() 
plots$plots 

このコードは2ページのpdfを生成します。 1ページ目には、著者 "John"に対応する2つのプロットが表示されています。 2ページ目には、作成者 "Michael"に対応する3つのプロットがコードに指定されているように表示されます。問題は著者 "Michael"が実際に5つの出版物を持っているということです。したがって、この著者の場合、5つのプロットが表示されていたはずです(2ページ中3ページ、残りの2ページは別ページ/次ページ)。私の質問は、必要な数のpdfページを生成するようにコードを書くにはどうすればいいですか?現時点では、ファセット/レベル変数「著者」ごとに1ページを生成します。しかし、もし私がこれを許せば、ある著者のために、1ページにたくさんのプロットがあり、読みづらくなります。したがって、ページあたり3つのプロットしかなく、必要な数のページが必要です。 ggforceのヘルプページによると

答えて

1

は、

ので、一つはページ数を計算することが期待されており、「通常、これは、すべてのページを一つずつをレンダリングするループに配置されます」 forループを続行します。

選択肢がmarrangeGrobなり、

require(plyr) 
plots <- dlply(Publications, 
       .(Author, Publication), "%+%", e1 = a) 
gridExtra::marrangeGrob(grobs = plots, nrow=3, ncol=1) 
関連する問題