[R] Image from bytes streams

Henrik Bengtsson hb at maths.lth.se
Tue Aug 16 10:00:14 CEST 2005


The R graphics is not sent to the standard output of the R process, 
which you assume when you try to "capture" it via your Java 'input' 
stream.  Simple illustration:

C:\>echo plot(1) | R --quiet --no-save
 > plot(1)
 >
C:\>

So where did the graphics go then?  If you "batch" run R commands like 
this, all graphical output is written to (one) default postscript file 
"Rplots.ps"; that's the file you want to read.  I bet you have a two 
page Rplots.ps file for your pie and scatter plot.  If you do not want 
postscript, but other formats, you have to generate you image files 
explicitly, e.g.

png("image.png", width=640, height=480)
plot(1)
dev.off()

Make sure you understand how R works before you try to call it from 
Java; there is nothing magic going on if you understand it.

Cheers

Henrik Bengtsson

Márcio de Medeiros Ribeiro wrote:
> Hello!
> 
> I'm trying to get an array of bytes from graphic images generated by
> R. Here, you can see my Java code:
> 
> --------------------------------------------------------------------------------------------------------------------------
> Process p = Runtime.getRuntime().exec("C:/Arquivos de
> programas/R/rw1090/bin/Rterm.exe --no-save");
> 
> DataOutputStream output = new DataOutputStream(new
> BufferedOutputStream(p.getOutputStream()));
> 
> DataInputStream input = new DataInputStream(new
> BufferedInputStream(p.getInputStream()));
> 
> // output.writeBytes("pie(c(50,30,20))"); //Pie graphic
> output.writeBytes("plot(1,1)"); // Plot graphic
> output.flush();
> 
> input.readFully(new byte[200]); // Here I read the "image" bytes.
> --------------------------------------------------------------------------------------------------------------------------
> 
> That's the problem: when I use Pie graphic, I got some bytes. However,
> when I use the Plot graphic, I got the same bytes! So, I suppose that
> my program does not read the bytes from the generated graphic from R.
> 
> Is it possible to get the bytes from the generated graphic? How can I
> get these bytes?
> 
> Sorry about my english. I'm brazilian! :)




More information about the R-help mailing list