Я использую knitr
для анализа. Я могу сохранять графики в формате pdf с \SweaveOpts{dev=pdf}
и в формате png с \SweaveOpts{dev=png}
. Мне интересно сохранять графики как в формате pdf, так и в формате png за один прогон, но использовать pdf в окончательных документах в интерактивном режиме. Любое предложение будет высоко оценено. Спасибо
Сохранение графиков как в формате pdf, так и в формате png, но с использованием файлов pdf в конечном документе
Ответы (1)
Вот настоящее решение:
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)
@
Или, если вы поместите все рисунки в отдельный каталог, вы можете запустить convert
непосредственно в этом каталоге (т.е. не нужно вызывать system()
в R).
Это не идеальное решение, но оно должно работать. Чтобы использовать родное устройство png()
R, вам нужно сначала ответить на мой вопрос в комментарии выше.
Rnw
и создание документа в формате PDF: есть ли возможность указать, какие файлы будут использоваться для создания документа? У меня есть rpeort с большим количеством графики, и я хотел бы подготовить его с высоким и низким разрешением (например, один с использованием png и один pdf).
- person radek; 11.11.2013
tex
не указано расширение графики. Будет ли что-то вроде \DeclareGraphicsExtensions{.pdf}
создавать отчет только с изображениями в формате PDF? Затем - мне все еще нужно скомпилировать два отдельных текстовых документа - один с опцией pdf
, другой с png
?
- person radek; 12.11.2013
\DeclareGraphicsExtensions
это ключ. Вы, конечно, можете автоматизировать это. Ничто не может остановить отважного программиста. Вы можете опубликовать новый вопрос, если хотите.
- person Yihui Xie; 12.11.2013
dev=c('pdf', 'png')
. - person Yihui Xie   schedule 12.03.2012