knitr
分析に使用しています。グラフをPDF形式で保存し\SweaveOpts{dev=pdf}
たり、png形式で保存したりできます\SweaveOpts{dev=png}
。グラフをpdf形式とpng形式の両方で一度に保存したいのですが、最終的なドキュメントでpdfをインタラクティブに使用したいと思っています。任意の提案をいただければ幸いです。ありがとう
1049 次
1 に答える
4
ここに本当の解決策があります:
Knitr 0.3.9 では、チャンクごとに複数のデバイスのサポートが開始されています (現時点では、GitHub からインストールする必要があります)。あなたの場合、チャンクオプションdev=c('pdf', 'png')
を設定して、PDFファイルとPNGファイルの両方を取得できます。
ImageMagick を使用して PDF ファイルを PNG に変換するソリューションを次に示します。もちろん、最初に ImageMagick をインストールし、その bin ディレクトリが次の場所にあることを確認する必要がありPATH
ます。
knit_hooks$set(convert = function(before, options, envir) {
# quit if before a chunk or no figures in this chunk
if (before || (n <- options$fig.num) == 0L) return()
# only convert pdf files
if (options$fig.ext != 'pdf') return()
# use ImageMagick to convert all pdf to png
name = fig_path() # figure filename
owd = setwd(dirname(name)); on.exit(setwd(owd))
files = paste(basename(name), if (n == 1L) '' else seq(n), sep = '')
lapply(files, function(f) {
system(sprintf('convert %s.pdf %s.png', f, f))
})
NULL
})
基本的に、このフックはチャンクの後に実行さconvert foo.pdf foo.png
れ、すべての PDF 図で実行されます。次のように使用できます
<<test-png, convert=TRUE>>=
plot(1); plot(2)
@
または、すべての Figure を別のディレクトリに置く場合は、そのディレクトリで直接実行できます(つまり、Rconvert
を呼び出す必要はありません)。system()
これは理想的な解決策ではありませんが、うまくいくはずです。R のネイティブpng()
デバイスを利用するには、まず上記のコメントで私の質問に答える必要があります。
于 2012-03-12T01:43:02.927 に答える