2014-02-25 48 views
1

我想输出示例乳胶表为jpg从R.:ř胶乳输出表为jpg文件

df <- data.frame(variable = c("a","b","c"), n=1:3) 
xtable(df) 

我可以使用knitr用:

\documentclass{article} 
\usepackage[english,ngerman]{babel} 

\begin{document} 

<<echo=FALSE, results="asis">>= 
xtable(xdf) 
@ 

\end{document} 

但这产生一个pdf文件。我可以截取表格并保存为jpg,但我想避免这种解决方法。

我更倾向于将输出从R中乳胶表到Windows

windows(width=20,height=15) 

,然后将其保存为JPG文件

savePlot("latex_table", type="jpg") 

不过,我想,这是不可能的,因为它必须首先由乳胶解释。

我想这样做的原因是:我想生成定期更新的图形和表格作为jpg手动插入到网页。我想使用乳胶桌具有设计的所有能力来创建漂亮的桌子。

+3

jpeg是一个可怕的文件格式,考虑PNG – baptiste

+0

我从来没有想过这件事。我改为PNG。谢谢。 – giordano

回答

2

您可以使用ImageMagickconvert工具(使用R中的system2()函数执行)将PDF文件转换为JPEG。在此之前,您可能希望裁剪LaTeX文档中的边距(请参阅pdfcrop)。我无法帮助您解释如何在Windows上安装这些工具,但例如在Fedora Linux上,你只需要sudo yum install texlive-pdfcrop-bin ImageMagick。然后调用:

  1. knitr::knit2pdf(...)
  2. system2('pdfcrop', 'input.pdf output.pdf')
  3. system2('convert', 'output.pdf output.jpg')

一切都可以设置在批处理模式下运行,无需任何用户交互,所以你甚至可能会认为,试图自动化将图形上传到网络服务器。

编辑:您也可以尝试在LaTeX中使用\documentclass[11pt]{standalone}生成一个PDF页面,页边距最小。

+0

非常感谢您的回答。我不知道这些工具。我将它们安装在Windows 7上,但我遇到了两个问题:(1)在R system2('pdfcrop.pl',...)和system2('convert',...)不起作用,后者给出“无效的参数 - output.jpg“。 (2)在DOS上,两个命令都产生输出,但前者(pdfcrop)只调整了表的大小,但没有裁剪白色边框。我需要一些时间来了解如何使用它们(以及为什么system2()不适用)。无论如何,这些工具都有一定的潜力。 – giordano

+0

请确保'convert'在你的PATH中,参见[这里](http://stackoverflow.com/questions/9546324/)。我已经添加了一个小贴士,如何通过使用'standalone'文档类并且不使用'pdfcrop'来减少页边距。 – gagolews