2012-10-05 114 views
6

我在与来自R导出EPS文件,并导入到Word 2010的[R EPS导出和导入到Word 2010

我使用ggplot2地块麻烦,如

library(ggplot2) 
p <- qplot(disp,hp,data=mtcars) + stat_smooth() 
p 

甚至称后setEPS()以下任何一项都不能生成可成功导入的文件。

ggsave("plot.eps") 

postscript("plot.eps") 
print(p) 
dev.off() 

奇怪的是,如果我使用产生的File情节 - >Save As - >Postscript从GUI菜单,就可以正确导入。但是,当Word文档随后以PDF格式导出时,图形中的字体有点锯齿。

所以我的问题是:

  • 什么组合(ggsave/postscript)设置,使我产生可以导入到Word 2010的EPS文件?
  • 如何确保在将Word文档导出为pdf时字体保持清晰?

更新

经过调查中,我有更多的运气cairo_ps生产地块。但是,导入到Word中时不显示任何文本。

此外,在检查乳胶文档中的各种eps输出(cairo_ps,保存在GUI中,ggsave)后,似乎Word中的eps导入筛选器相当差,因为print/pdf输出与质量不匹配的胶乳文件。 ggsave版本(使用postscript)确实存在一些其他两种方法没有的颜色问题。

结论是,这是一个Word问题,因此fortune(109)不适用。我很乐意被证明,但我会把答案和奖金授予谁可以提供命令的人,这些命令可以通过命令形式复制GUI的输出。

+0

也许这是一个Word 2007+的问题:“[无法使用EPS图形在Word 2007,并作出PDF](HTTP://论坛.adobe.com /线程/ 439881)“。 –

回答

4

这个工作对我来说...在postscript帮助页面以下建议:

postscript("RPlot.eps", height = 4, width = 4, horizontal = FALSE, onefile = FALSE, 
      paper = "special") 
library(ggplot2) 
p <- qplot(disp,hp,data=mtcars) + stat_smooth() 
p 
#geom_smooth: method="auto" and size of largest group is <1000, so using loess. Use 'method = x' to #change the smoothing method. 
#Warning message: 
#In grid.Call.graphics(L_polygon, x$x, x$y, index) : 
# semi-transparency is not supported on this device: reported only once per page 
dev.off() 
#quartz 
#  2 

末的有趣的东西让你的通知,这只是一台Mac测试的解决方案,到目前为止反正。我试用了R版本2.15.1(2012-06-22) - “烤棉花糖”:平台:i386-pc-mingw32/i386(32位)和MS Word 2007在Win XP和它的工作。命令是插入/图片... /选择eps格式/选择文件。

编辑2:除了直接使用postscript设备还有另一种方法来保存。 Windows中提供了"eps"模式的savePlot方法(但不是在Mac中)。我同意字体不像Mac上显示的那样流畅,但我可以在使用savePlot进行保存和使用交互式窗口中的另存为之间区别质量。

savePlot(filename = "Rplot2", type = "eps", device = dev.cur(), restoreConsole = TRUE) 

savePlot电话(.External(CsavePlot, device, filename, type, restoreConsole))

+0

我认为' setEPS()'全局设置这些选项。无论如何,它在Windows上仍然不适用于我。 – James

+0

它仅在某些查看模式中显示。但这是一个Word问题,而不是一个R问题。 –

+0

'savePlot'看起来像答案,但它具有比其他方法更少的灵活性。是的,我同意并始终知道,Word是问题所在 - 它比全国OCD会议上的昆虫学突破会议还有更多的怪癖和错误!无论如何,布拉沃!滴答和赏金是你的。 – James

1

您可能更喜欢使用wmf作为您可以在Windows上创建的格式。

+0

不一定,wmf格式也会有点小问题。我认为在R-wiki上有一个关于将图形输出到MS Office的很好的参考,但是我找不到它。 –

+1

嗯,我的_real_建议当然不会碰到Word,但不是每个人都可以逃脱到胶乳/ sweave/knitr/rmd/...这就是说,当我不得不使用它时,wmf是最不痛苦的选项。 –

+0

我通常使用可笑的高分辨率PNG(存储大小不会严重缩放)获得最佳运气,然后可以在Office文档中适当调整大小。唯一的诀窍是保持“物理尺寸”(字体缩放,cex等)不变,同时提高分辨率。 –

0

均可以使用工作室针织与所有的情节,然后打开HTML文件与Word的HTML文件。

knitr tutorial

+0

自HTML何时支持Word的EPS支持SVG? – mlt

+0

我没有说任何关于EPS的事情。我只是想说一个简单的方法来让你的图表进入Word。 – jem77bfp

4

我解决了这个问题,来自R出口.EPS文件,并使用postscript命令的colormodel="rgb"选项(默认为"srgb")导入到Word 2010在Windows 7上。

postscript("RPlot.eps", height = 4, width = 4, horizontal = FALSE, 
     paper = "special", colormodel = "rgb") 
library(ggplot2) 
p <- qplot(disp,hp,data=mtcars) + stat_smooth(se=FALSE, method="loess") 
p 
dev.off() 
1

Word确实不太支持EPS。所述best solution I've seen so far使ř图(基础R图,晶格图或ggplots)与Office(的Word,PowerPoint)一起工作是将它们直接使用包ReporteRs,导出到投影片如

library(ReporteRs) 
require(ggplot2) 
mydoc = pptx() 
mydoc = addSlide(mydoc, slide.layout = "Title and Content") 
mydoc = addTitle(mydoc, "Plot examples") 
myplot = qplot(Sepal.Length, Petal.Length 
       , data = iris, color = Species 
       , size = Petal.Width, alpha = I(0.7) 
) 
mydoc = addPlot(mydoc, function() print(myplot), vector.graphic=TRUE) 
writeDoc(mydoc, file = "test plot.pptx") 

enter image description here

这导致了一个完全可编辑的,高质量的Powerpoint图形,以原生Office矢量为基础的DrawingML格式,如果您愿意,您也可以随时复制&粘贴作为增强型图元文件(使用Copy ... Paste special ... Enhanced metafile),与从R出口的EMF不同,它也完全支持透明度。对于最终产品,如果需要,您也可以轻松地将其打印到PDF格式的PDF中,并且它将保持良好的矢量格式,并且质量良好。

对于基础R情节语法是:

library(ReporteRs) 
mydoc = pptx() 
mydoc = addSlide(mydoc, slide.layout = "Title and Content") 
mydoc = addTitle(mydoc, "") 
myplot = function() {return(plot(c(1:100), c(1:100), pch=20))} 
mydoc = addPlot(mydoc, fun=myplot, vector.graphic=TRUE, offx=0,offy=0,width=12, height=8, fontname="Calibri", pointsize=20) 
writeDoc(mydoc, file = "test plot2.pptx")