使用命令行时,无法通过openxlsx包将绘图插入到XLSX中

我试图在R中使用openxlsx软件包将一个绘图插入到XLSX文件中。当我使用R GUI时,我可以完成这个任务。

但是,在使用batch file时,会创build绘图,但不会将其插入到XLSX文件中。 而是将其创build为与新创build的XLSX文件(自动命名为“Rplots.pdf”)相邻的独立PDF文件。 dataframe被写入XLSX文件就好了。

R脚本(名为“insertPlot.R”):

 library(ggplot2) library(openxlsx) wb <- createWorkbook() addWorksheet(wb, "Data") addWorksheet(wb, "Graph", gridLines=FALSE) df <- data.frame(c(1:5), c(5:1)) names(df) <- c("x","y") writeData(wb, "Data", df) p <- ggplot(aes(x=x, y=y), data=df) + geom_line(size=1, colour="blue") print(p) #plot needs to be showing insertPlot(wb, "Graph", width=11.18, height=7.82, fileType="png", units="in") saveWorkbook(wb, "test.xlsx", overwrite=TRUE) 

batch file脚本:

 "C:\Program Files\R\R-3.1.3\bin\RScript.exe" --no-save --no-environ --no-init-file --no-restore --no-Rconsole "C:\temp\insertPlot.R" 

R GUI(所需)结果

R批处理命令结果

总之,我很困惑如何有一个RScriptbatch file完成这一点。

有没有人有任何成就,或可以指出我的错误?

我相信我已经find了一种方法,可以通过将图输出到png设备,然后利用openxlsx包中的insertImage来实现这openxlsx

 library(ggplot2) library(openxlsx) wb <- createWorkbook() addWorksheet(wb, "Data") addWorksheet(wb, "Graph", gridLines=FALSE) df <- data.frame(c(1:5), c(5:1)) names(df) <- c("x","y") writeData(wb, "Data", df) png("graph.png", width=1024, height=768, units="px", res=144) #output to png device p <- ggplot(aes(x=x, y=y), data=df) + geom_line(size=1, colour="blue") print(p) dev.off() #important to shut down the active png device insertImage(wb, "Graph", "graph.png", width=11.18, height=7.82, units="in") saveWorkbook(wb, "test.xlsx", overwrite=TRUE) #unlink("graph.png") #can optionally delete the original png file 

希望这可以帮助任何可能面临同样问题的人。