Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
771 views
in Technique[技术] by (71.8m points)

r - ggplot2 ggsave function causes graphics device to not display plots

I've updated my ggplot2 library and I am now having a problem where after calling ggsave, the graphics device no longer displays the plot. I'm unable to resolve the issue meaning I cannot export the plots as needed. Please help.

Searching the web has revealed some mention of problems with dpi mismatches, but setting or changing the dpi appears to have no effect. This problem appears to have begun after doing an update of the ggplot2 library.

The following code reproduces the problem:

library(ggplot2);
df <- read.table(textConnection('value,value1 
 1,1 
 2,2
 3,3 '),header=TRUE,sep=',');

ggplot(df,aes(x=value,y=value1)) +   geom_point();

setwd('c:/temp'); 
ggsave('test.png');

After running, the output is blank, and the graphics device no longer displays the plot. Any subsequent plots are not displayed on the graphics device.

After running dev.off(), new plots are displayed okay, until ggsave is called again.

sessionInfo() reports the versions of R and libraries as:

R version 3.0.0 (2013-04-03)
Platform: i386-w64-mingw32/i386 (32-bit)

locale:
[1] LC_COLLATE=English_New Zealand.1252  LC_CTYPE=English_New Zealand.1252   
[3] LC_MONETARY=English_New Zealand.1252 LC_NUMERIC=C                        
[5] LC_TIME=English_New Zealand.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] plyr_1.8        ggplot2_0.9.3.1 RODBC_1.3-6    

loaded via a namespace (and not attached):
 [1] colorspace_1.2-2   dichromat_2.0-0    digest_0.6.3       grid_3.0.0         gtable_0.1.2      
 [6] labeling_0.1       MASS_7.3-26        munsell_0.4        proto_0.3-10       RColorBrewer_1.0-5
[11] reshape2_1.2.2     scales_0.2.3       stringr_0.6.2      tools_3.0.0   

The problem occurs in 2.15.0 and 2.15.3 of R also.

EDIT: changed code so data would load using sep=',' rather than whitespace

ADDITION: further testing reveals that this may in fact be a bug with RStudio and how it is displaying the graphics device after ggsave, rather than R itself. Running the above script in RGui does not reproduce the problem, only in RStudio V0.97.336 + V0.97.449.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Seems to be an issue with RStudio. The issue is described here and here.

The workaround is to install RStudio V0.97.311, or ensure that you execute the ggplot and ggsave lines separately (i.e. don't select and run together in a block with control+enter).


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...