9

Rのパッケージを使用して XLSX ファイルにプロットを挿入しようとしていますopenxlsx。R GUI を使用すると、これを実行できます。

ただし、バッチ ファイルを使用すると、プロットは作成されますが、XLSX ファイルには挿入されません。代わりに、新しく作成された XLSX ファイル (自動的に「Rplots.pdf」という名前) に隣接する別の 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"

R GUI (望ましい) 結果

R バッチ コマンドの結果

要約すると、RScript バッチ ファイルでこれを実現する方法について、私は混乱しています。

誰かが成功したか、私の間違いを指摘できますか?

4

2 に答える 2

10

pngプロットをデバイスに出力し、パッケージ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

これが同じ問題に直面している可能性のある人に役立つことを願っています.

于 2015-11-10T18:43:09.750 に答える