Christophe Pallier
2004-Feb-12 10:57 UTC
[R] calling R from a shell script and have it display graphics
Hello, I am running R under Linux/x11. I would like to call R from a shell script and have it display a series of graphics. The graphics should remain visible until the user clicks or presses a key. I first tried R BATCH, but it does not load the x11 module, making it impossible to open x11 or png devices. Then, I tried to call R with a 'here' script: R --vanilla --quiet --args text.txt <<'EOF' file=commandArgs()[5] cat('processing ',file,'\n') ... x11() plot(f2,log='xy',type='b',las=1,cex=.5,xlab='rang',ylab='freq') Sys.sleep(10) q() EOF The problem with this approach is that the script cannot interact with the user. par(ask=T) will fail because it reads input from the script rather than from the keyboard. While I am writing this, a solution comes to my mind: I could save all the graphics in png format (using R <script.R), and when it is finished, call ImageMagick's display to show all the png (or use any other diaporama system). However, I find it a dirty hack. Is there a simpler and cleaner way to achieve this? Christophe Pallier www.pallier.org
Don MacQueen
2004-Feb-12 15:45 UTC
[R] calling R from a shell script and have it display graphics
I don't know about the "simpler" part, but you could use the tcltk package to put up a window that prompts the user to continue. -Don At 11:57 AM +0100 2/12/04, Christophe Pallier wrote:>Hello, > >I am running R under Linux/x11. > >I would like to call R from a shell script and have it display a >series of graphics. >The graphics should remain visible until the user clicks or presses a key. > >I first tried R BATCH, but it does not load the x11 module, making >it impossible to open x11 or png devices. > >Then, I tried to call R with a 'here' script: > >R --vanilla --quiet --args text.txt <<'EOF' >file=commandArgs()[5] >cat('processing ',file,'\n') >... >x11() >plot(f2,log='xy',type='b',las=1,cex=.5,xlab='rang',ylab='freq') >Sys.sleep(10) >q() >EOF > >The problem with this approach is that the script cannot interact >with the user. >par(ask=T) will fail because it reads input from the script rather >than from the keyboard. > >While I am writing this, a solution comes to my mind: I could save >all the graphics in png format (using R <script.R), and when it is >finished, call ImageMagick's display to show all the png (or use any >other diaporama system). However, I find it a dirty hack. > >Is there a simpler and cleaner way to achieve this? > >Christophe Pallier >www.pallier.org > >______________________________________________ >R-help at stat.math.ethz.ch mailing list >https://www.stat.math.ethz.ch/mailman/listinfo/r-help >PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html-- -------------------------------------- Don MacQueen Environmental Protection Department Lawrence Livermore National Laboratory Livermore, CA, USA
David Brahm
2004-Feb-13 19:33 UTC
[R] calling R from a shell script and have it display graphics
Christophe Pallier <pallier at lscp.ehess.fr> wrote:> I would like to call R from a shell script and have it display a series > of graphics. > The graphics should remain visible until the user clicks or presses a key.One trick is to use locator(1), which waits for a mouse click on a plot. Here's a minimal Perl script that runs R, displays a plot, and exits when the click is detected. eval 'exec /usr/local/bin/perl -s -S $0 "$@"' if 0; open(SCRIPT, "| R --vanilla --slave"); print SCRIPT <<'EOF'; x11(width=5, height=3.5) plot(1:10, 1:10) z <- locator(1) q() EOF close(SCRIPT); -- -- David Brahm (brahm at alum.mit.edu)