我正在尝试使用 R 中的 openxlsx
包将绘图插入到 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)
批处理文件脚本:
"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"
总之,我对如何让 RScript 批处理文件完成此任务感到困惑。
有人取得了成功或者可以指出我的错误吗?
最佳答案
我相信我已经找到了一种方法来无缝地完成此任务,方法是将绘图输出到 png
设备,然后利用 openxlsx
中的 insertImage
包。
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
希望这可以帮助任何可能面临同样问题的人。
关于r - 使用命令行时无法通过 openxlsx 包将绘图插入 XLSX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33534277/