[R] several common sub-axes within multiple plot area

Karl Brand k.brand at erasmusmc.nl
Sun Jun 27 21:26:48 CEST 2010


Jim,

What a great function: exactly as i needed.

I'm sure i'll be finding alot of use for the plotrix package.

Sincere thanks for your fast help, cheers,

Karl

On 6/27/2010 8:52 AM, Jim Lemon wrote:
> On 06/26/2010 11:20 PM, Karl Brand wrote:
>> Dear List,
>>
>> I'd really appreciate tip's or code demonstrating how i can achieve some
>> common axis labels integrated into a multiple plot.
>>
>> In my example (below), i'm trying to achieve:
>>
>> -a single "Results 1 (Int)" centered & btwn row 1 and row 2;
>> -a single "Results 2 (Int)" centered & btwn row 2 and row 3; and,
>> -a single "Results 3 (Int)" centered at the bottom, ie., below row 3.
>>
>> I played with mtext() and par(oma=... per this post-
>>
>> https://stat.ethz.ch/pipermail/r-help/2004-October/059453.html
>>
>> But have so far failed to achieve my goal. Can i succeed with something
>> combined with the 'high level' plot() function? Or do i need to get
>> specific with some low level commands (help!)?
>>
> Hi Karl,
> Your request prompted me to have a look at the getFigCtr function in the
> plotrix package. All I had to do was to add an argument to adjust the
> proportion of the figure region that was calculated, and it will do what
> you want, I think. The new function will be in the next version.
>
> getFigCtr<-function(pos=c(0.5,0.5)) {
> pars<-par(c("usr","mar","fin","pin"))
> pxspan<-diff(pars$usr[1:2])
> fxspan<-pxspan*pars$fin[1]/pars$pin[1]
> figxctr<-
> pars$usr[1]-(fxspan-pxspan)*pars$mar[2]/(pars$mar[2]+pars$mar[4]) +
> fxspan*pos[1]
> pyspan<-diff(pars$usr[3:4])
> fyspan<-pyspan*pars$fin[2]/pars$pin[2]
> figyctr<-
> pars$usr[1]-(fyspan-pyspan)*pars$mar[1]/(pars$mar[1]+pars$mar[3]) +
> fyspan*pos[2]
> return(c(figxctr,figyctr))
> }
>
> #my example:
> dev.new()
> plot.new()
> library(plotrix)
> par(mfrow=c(3,2))
> #Graph 1:
> plot(rnorm(20), rnorm(20),
> xlab = "",
> ylab = "Variable A",
> main = "Factor X")
> #Graph 2:
> plot(rnorm(20), rnorm(20),
> xlab = "",
> ylab = "Variable A",
> main = "Factor Y")
> mtext("Results 1 (Int)",1,at=getFigCtr(c(0,0))[1],line=3)
> #Graph 3:
> plot(rnorm(20), rnorm(20),
> xlab = "",
> ylab = "Variable B")
> #Graph 4:
> plot(rnorm(20), rnorm(20),
> xlab = "",
> ylab = "Variable B")
> mtext("Results 2 (Int)",1,at=getFigCtr(c(0,0))[1],line=3)
> #Graph 5:
> plot(rnorm(20), rnorm(20),
> xlab = "",
> ylab = "Variable C")
> #Graph 6:
> plot(rnorm(20), rnorm(20),
> xlab = "",
> ylab = "Variable C")
> mtext("Results 3 (Int)",1,at=getFigCtr(c(0,0))[1],line=3)
>
>
> Jim
>

-- 
Karl Brand
Department of Genetics
Erasmus MC
Dr Molewaterplein 50
3015 GE Rotterdam
T +31 (0)10 704 3457 |F +31 (0)10 704 4743 |M +31 (0)642 777 268



More information about the R-help mailing list