7

1 つの PDF ファイルに複数のグラフを印刷したいと考えています。これには多くのことがあると思いますが、ページごとに異なるウィンドウ/グラフ サイズを印刷したいと思います。つまり、最初のページは 8.5x11、2 ページ目は 11x8.5 などです。私はこれを試しました:

pdf(file="Combined_Graphs.pdf",onefile=TRUE,bg="white",width=8.5,height=11)
hist(rnorm(100))
pdf(file="Combined_Graphs.pdf",onefile=TRUE,width=11, height=8.5, bg="white")
hist(rnorm(100,10,2),col="blue")
dev.off()

onefile=TRUE閉じる前に最後のグラフィックのみを生成するため、間違って使用しているに違いありません。pdf 関数を 2 回呼び出さずにグラフィック デバイスのサイズを変更するより良い方法はありますか?

4

2 に答える 2

7

私がすることは、個別のPDFを作成し、後でそれらを結合することです。これには PDF ツールキットを使用します。これをシステム コールを使用して R 関数にラップすると、Rsystemからスクリプト可能になります。pdftk の呼び出しは次のようになります。

pdftk *pdf cat output combined.pdf

またはRで:

system("pdftk *pdf cat output combined.pdf")  

combine_pdfs = function(path, output_pdf) {
  system(sprintf("pdftk %s/*pdf cat output %s"), path, output_pdf)
}
于 2012-09-26T17:56:20.610 に答える
5

あなたがやろうとしていることはRではできないと思います。つまり、Paul Hiemstraが提案したように、PDFツールキットなどの外部ツールを使用して、個別のPDFファイルをさまざまなページサイズと組み合わせる必要があります(代替ツールはPDFjam です)。

onefile = TRUEへの呼び出しでを設定するpdf()と、その PDF デバイスに書き込まれる各プロットは、同じページ ディメンションで別のページに印刷されます。あなたの例では、最初の PDF デバイスを開いて 1 つのプロットを書き込んでから、2 番目の PDF デバイスを開いて別のプロットを書き込んでから、2 番目の PDF デバイスを閉じますが、最初の PDF デバイスは開いたままにします。両方の呼び出しに同じfile引数を使用するためpdf()、最初の PDF デバイスがまだ開いていることに気付かない場合があります。あなたがそれを閉じた場合、最初のプロットだけが"Combined_Graphs.pdf".

これは、PDF デバイスがどのように開かれ、コンテンツが入力され、閉じられるかを示す例の修正版です。

pdf(file = "foo.pdf", onefile = TRUE, width = 8.5, height = 11)
hist(rnorm(100))
hist(rnorm(100, 10, 2), col = "red")
pdf(file = "bar.pdf", width =11, height = 8.5)
hist(rnorm(100, 10, 2), col = "blue")
dev.off()
dev.off()
于 2012-09-26T20:14:59.017 に答える