我正在使用knitr
进行分析。我可以使用\SweaveOpts{dev=pdf}
以及\SweaveOpts{dev=png}
的png格式保存pdf格式的图表。我有兴趣在一次运行中以pdf和png格式保存图形,但要交互地在最终文档中使用pdf。任何建议将不胜感激。由于以pdf和png格式保存图形,但在最终文档中使用pdf文件
回答
来了真正的解决方案:
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
})
基本上这个钩子一大块后执行,并运行在所有PDF数字convert foo.pdf foo.png
。您可以使用它像
<<test-png, convert=TRUE>>=
plot(1); plot(2)
@
或者,如果你把所有的数字在一个单独的目录,你可以在该目录中直接运行convert
(即不必调用system()
在R)。
这不是一个理想的解决方案,但应该工作。要使用R的本机png()
设备,您需要先在上述注释中回答我的问题。
假设使用'Rnw'文件并生成pdf文档:是否有一个选项来指定哪些文件将用于生成文档?我有一个大量的图形运行,并希望prearep它的高分辨率和低分辨率(即一个使用PNG和一个PDF)。 – radek 2013-11-11 15:05:42
@radek你可以用LaTeX技巧做到这一点:http://en.wikibooks.org/wiki/LaTeX/Importing_Graphics – 2013-11-11 18:43:40
感谢您的快速回答。我看到生成的'tex'文件没有指定图形的扩展名。像'\ DeclareGraphicsExtensions {.pdf}'这样的东西只会产生pdf图像报告吗?然后 - 我仍然需要编译两个独立的tex文件 - 一个带有'pdf'选项,一个带'png'? – radek 2013-11-11 20:13:35
- 1. 如何使用Java以Orbeon格式的PDF URL保存PDF文件
- 2. PHPExcel创建/样式/保存PDF文档
- 3. 在PDF中添加pdf表格文档
- 4. 保存PDF文件
- 5. 保存PDF格式但不能打印文件
- 6. iphone PDF格式保存到文档存储
- 7. 从在线IDE将Matlab/Octave图表保存为pdf/png格式?
- 8. 用Javascript创建PNG图像和文本的PDF格式吗?
- 9. md,pdf和html格式的文档
- 10. 用Chickenfoot保存PDF文件
- 11. 使用savePlot以pdf格式保存图例时截图
- 12. Ghostscript的转换PDF文本,并保持PDF文件表格式
- 13. 如何以PDF格式发送PDF格式的文件?
- 14. 是否可以将pdf格式图像插入reportlab生成的pdf文档中?
- 15. 使目前的PDF文档中的文本,但无形的
- 16. 保存PDF文档的名称基于文件中的文本
- 17. Crystal Reports可以生成PDF/A文件格式的文档吗?
- 18. 保存PDF文件使用默认名称在导出PDF
- 19. 使用PHPPdf保存PDF文件
- 20. 如何使用Scrapy保存PDF文件?
- 21. 将PDF保存为文件
- 22. Word未能将文档保存为PDF
- 23. iOS:下载并保存文档中的PDF文件app
- 24. 如何使用SVG图形将PDF转换为PDF文件?
- 25. 在HDFS中保存图像文件(jpeg,png)的输入格式
- 26. 如何.PDF到png格式
- 27. 使用html2pdf打印PDF格式文件中的数据作为PDF文件
- 28. 使用ReportLab(Python)的PDF文档中的PDF图像
- 29. 如何使用swift以编程方式将pdf文档保存到iCloud Drive?
- 30. MS-Office文档转换为.PDF格式
您是否有每个块有多个图块?如果你不这样做,我可以通过一个块钩子向你展示一个简单的方法;如果这样做,我将需要更改内部代码以允许每个块有多个设备,例如, 'dev = c('pdf','png')'。 – 2012-03-12 01:14:42
谢谢@熠辉的评论。是的,我确实有每个块有多个地块。 – MYaseen208 2012-03-12 01:50:26
下面的答案是一个通用的解决方案,它不需要每个块都有一个图,我会考虑如何在多设备的knitr中添加原生支持;也许这可以在knitr 0.4中完成。 – 2012-03-12 02:13:52