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

Jim*_*y G 7 excel r ggplot2 openxlsx

我正在尝试openxlsx使用R中的包将绘图插入到XLSX文件中.当我使用R GUI时,我能够完成此操作.

但是,使用批处理文件时,会创建绘图,但不会将其插入XLSX文件中.而是将其创建为与新创建的XLSX文件相邻的单独PDF文件(自动命名为"Rplots.pdf").数据框很好地写入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)
Run Code Online (Sandbox Code Playgroud)

批处理文件脚本:

"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"
Run Code Online (Sandbox Code Playgroud)

R GUI(所需)结果

R批处理命令结果

总之,我很困惑如何让RScript批处理文件实现这一目标.

有人有任何成功或可以指出我的错误?

Jim*_*y G 8

我相信我已经找到了一种方法,通过将绘图输出到png设备然后insertImageopenxlsx包中使用来无缝地实现这一点.

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
Run Code Online (Sandbox Code Playgroud)

希望这有助于任何可能面临同样问题的人.