将R图重定向到MS Word

时间:2011-08-27 04:42:44

标签: r

我想知道如何将R图重定向到MS Word?就像sink()将R输出重定向到任何文件而不是图形。我试过R2Wd,但有时候它没有正常工作。任何评论和帮助将受到高度赞赏。感谢

2 个答案:

答案 0 :(得分:7)

要回答您的直接问题,将R脚本和绘图的结果转换为单词的最佳方法可能是通过某种形式的Sweave。查找odfweave以将R输出发送到LibreOffice文件,然后可以将其转换为单词,如果您有正确的插件,甚至可以直接在Word中打开。

要创建可编辑的绘图(即您可以更改绘图的外观,移动图例等)我建议将绘图保存为svg格式(可缩放矢量图形),然后可以使用优秀的免费矢量编辑图形应用inkscape

例如,如果我将ggplot2图形创建为对象

library(ggplot2)
dataframe<-data.frame(fac=factor(c(1:4)),data1=rnorm(400,100,sd=15))
dataframe$data2<-dataframe$data1*c(0.25,0.5,0.75,1)
testplot<-qplot(x=fac, y=data2,data=dataframe, colour=fac, geom=c("boxplot", "jitter"))

您可以使用Cairo包,它允许创建svg文件,然后我可以在Inkscape中编辑它们。

library(Cairo)
Cairo(600,600,file="testplot.svg",type="svg",bg="transparent",pointsize=8, units="px",dpi=400)
testplot
dev.off()
Cairo(1200,1200,file="testplot12200.png",type="png",bg="transparent",pointsize=12, units="px",dpi=200)
testplot
dev.off()

有关详细信息,请阅读上一个问题,其中包含更多答案Create Editable plots from R

另外,您可以按照Hadley的建议,保存实际的ggplot2对象,然后再加载并修改它

save(testplot, file = "test-plot.rdata")
# Time passes and you start a new R session
load("test-plot.rdata")
testplot + opts(legend.position = "none")
testplot + geom_point()

答案 1 :(得分:2)

要使用MSword获取类似sink的行为,请查看wdTxtStart包中的TeachingDemos函数。这在内部使用R2wd,因此您将看到类似的功能,这只是将您所做的一切发送到word文档。

图表不会自动发送,因为您可能会添加图表,但一旦您知道图表已完成,就可以使用wdtxtPlot将当前图表发送到word文档。

如果您提前知道自己想要做什么,那么sweave或类似的东西可能是更好的方法(正如已经提到的那样)。创建Rexcel的小组也在开发Sword,它可以像MSword中的内容一样发誓。