2015-11-04 6 views
5

Ich versuche, ein Diagramm in eine XLSX-Datei mit der -Paket in R. einfügen Wenn ich die R-GUI benutze, kann ich dies erreichen.Kann nicht plotten in XLSX über openxlsx Paket bei Verwendung der Befehlszeile

Wenn Sie jedoch eine Stapeldatei verwenden, wird das Plot erstellt, aber nicht in die XLSX-Datei eingefügt. Stattdessen wird es als separate PDF-Datei neben der neu erstellten XLSX-Datei erstellt (automatisch "Rplots.pdf" genannt). Der Datenrahmen wird gut in die XLSX-Datei geschrieben.

Das R-Skript ("insertPlot.R" genannt):

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) 

Die Batch-Datei Skript:

"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 (Desired) Result

R Batch Command Result

Zusammengefasst ich Ich bin verwirrt, wie eine RScript-Batch-Datei dies erreichen kann.

Hat jemand Erfolg gehabt oder kann ich auf meinen Fehler hinweisen?

+0

Nach weiterem Graben glaube ich, dass ich [eine Antwort] gefunden habe (https://stackoverflow.com/questions/7024486/rscript-is-plotting-to-pdf). Der Schlüssel besteht darin, 'x11()' oder 'windows()' zu verwenden, bevor Sie den Plot ausführen, damit dies funktioniert. Dies verwendet jedoch nicht Rscript in seiner entworfenen Weise. Scheint, ich muss zurück zum Zeichenbrett gehen. –

Antwort

4

Ich glaube, ich habe einen Weg gefunden, dies nahtlos zu bewerkstelligen, indem ich das Plot an ein png Gerät austausche und dann insertImage aus dem openxlsx Paket verwende.

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 

Hoffe das hilft jedem, der mit dem gleichen Problem konfrontiert sein könnte.

Verwandte Themen