Sorry for again asking the same question, but I am still not successfull, also 
after using grid-package, as recommended previously:

I want to write a function() which generates a graphical output and can be used 
in a loop to produce several results with a layout like in 
 
par(mfrow=c(5,5))
for ( i in 1:10){
        plot(1:10)
} 

Here is the (experimental) code: 


myfunction <- function(){
        vp1 <- viewport(x=0.1, y=.7, w=.8, h=.2, just="left", name="vp1")
        vp2 <- viewport(x=.1, y=.5, w=.8, h=.2, just="left", name="vp2")
        pushViewport(vp1)
                grid.rect(gp=gpar(col="grey"))
                grid.text("vp1")
                grid.xaxis(main=FALSE)
        upViewport()
        pushViewport(vp2)
                grid.rect(gp=gpar(col="grey"))
                grid.text("vp2")
                grid.xaxis()
}


And the following loop:


par(mfrow=c(5,5))
for (i in 1:10) {
         grid.newpage()  # when ommitting this line, the following plots will 
be plotted as childrens of the afore generated parent
         myfunction()
}


In conclusion, every myfunction() result overwrites the output of the previous 
output and is not plotted side by side as intended.

What to change?

Thanks a lot, Dirk

Dr.med. D. Weismann
Schwerpunkt Endokrinologie/Diabetologie
Medizinische Klinik und Poliklinik I
Universität Würzburg
Josef-Schneider-Str. 2
97080 Würzburg
email: [EMAIL PROTECTED]
Telefon: 0931/201-1



-----Ursprüngliche Nachricht-----
Von: Gabor Grothendieck [mailto:[EMAIL PROTECTED]
Gesendet: Mi 17.05.2006 03:19
An: Weismann, Dirk
Cc: [EMAIL PROTECTED]; [EMAIL PROTECTED]
Betreff: Re: [R] multiple plots in a function()
 
Use grid graphics
  http://www.stat.auckland.ac.nz/~paul/grid/grid.html
and the gridbase package to incorporate classic
graphics in that.

On 5/16/06, [EMAIL PROTECTED]
<[EMAIL PROTECTED]> wrote:
> Thanks a lot, but my problem is not to get a temporary change with par()in 
> myfunction and return to 'oldpar'after finishing. What I want is, that the 
> output of myfunction is handled like one graphic (ie one plot) and therefore 
> I can get the output of myfunction 10times side by side in one window (e.g. 
> mfrow=c(5,5)). But the 'par(mfrow=c(1,2))' inside 'myfunction' makes this 
> impossible.
> I used plot(..,type="n")two times to initialize the graphics in 'myfunction'  
> and filled both with a lot of low-level graphic code. Since I always need 
> both graphical outputs to interpret the results, I prefer to write one 
> function instead of two for each plot. This might not be the best way to 
> create a graphical output in a function, but how to do it better?
>
> Thanks, Dirk
>
> -----Ursprüngliche Nachricht-----
> Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Im Auftrag von Gabor 
> Grothendieck
> Gesendet: Dienstag, 16. Mai 2006 05:01
> An: Weismann, Dirk
> Cc: r-help@stat.math.ethz.ch
> Betreff: Re: [R] multiple plots in a function()
>
> You could override par by optionally passing it as an argument:
>
> f <- function(x = 1:10, y = 1:10, par = list(mfrow = c(2,2))) {
>        if (!is.null(par)) {
>                on.exit(par(opar))
>                opar <- par(par)
>        }
>        plot(x)
>        plot(y)
> }
>
> opar <- par(mfrow=c(4,4))
> for(i in 1:8) f(par = NULL)
> par(opar)
>
>
>
> On 5/15/06, [EMAIL PROTECTED]
> <[EMAIL PROTECTED]> wrote:
> > Dear all,
> > I have the following problem:
> > I have written a function genereating to plots, eg myfunction <-
> > (data, some.parameters) {
> >        #some calculations etc
> >        .
> >        par (mfrow=c(1,2))
> >        plot1(......)
> >        plot2(.....)
> > }
> > which works fine. But for analysing several variants, I tried a slope, eg:
> >
> > par (mfrow=c(5,5))
> >  for ( i in 1:10) {
> >    myfunction(data, i)
> > }
> >
> > Off course, the par() in myfunction overwrites the par() before the slope. 
> > So, how to write myfunction, that it plots two plots and can be used in the 
> > slope like in the example?
> >
> > Thanks a lot, Dirk
> >
> > Dr.med Dirk Weismann
> > Schwerpunkt für Endokrinologie und Diabetologie Medizinische
> > Universitätsklinik I 97080 Würzburg
> > email: [EMAIL PROTECTED]
> > Telefon: 0049-931-201-36744
> >
> >        [[alternative HTML version deleted]]
> >
> >
> >
> > ______________________________________________
> > R-help@stat.math.ethz.ch mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide!
> > http://www.R-project.org/posting-guide.html
> >
> >
>
> ______________________________________________
> R-help@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>

______________________________________________
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to