[R] How to add space between main title to leave space for legend?

Peter Dalgaard p.dalgaard at biostat.ku.dk
Sat May 31 21:45:42 CEST 2008


Paul Johnson wrote:
> Hello, everybody:
>
> I recently encountered an example with  in which the graph was placed
> in a way that did not leave room for a legend.  Maybe you would
> describe it as "legend too big", I'm not sure.  I found myself wishing
> I could force in some space after the title.
>
> Here's working example where I'd like to make room for a legend.
>
>
>
> x <- rnorm(100)
>
> hist(x, freq=F, main="Different Meanings of Normality")
>
> lines(density(x))
>
> xseq1 <- seq( min(x), max(x), length.out=100)
>
> m1 <- mean(x)
>
> sd1 <- sd(x)
>
> obsNormal <- dnorm(xseq1, mean=m1, sd=sd1)
>
> lines( xseq1, obsNormal, lty=2, col="red")
>
> truNormal <- dnorm(xseq1)
>
> lines(xseq1, truNormal, lty=3, col="green")
>
> legend(0,0.4, legend=c("observed density", "normal with observed mean
> & sd", "normal with 'true' mean and sd"), lty=c(1,2,3), col=c("black",
> "red", "green"))
>
>
> I tried fiddling around with par to change the margins, but it has the
> bad effect of resizing the image and creating a blank space into which
> I'm not allowed to write the legend. Know what I mean? I try
>
> par( mar=c(1,1,3,1)) or par(mai=c(1,1,4,1))
>
> before the hist and it makes space, but useless space.
>
> I've been considering something desperate, such as layout().  Isn't
> there a simpler way?
>
>   
(1) par(xpd=TRUE) allows you to write outside the plotting region

(2) xlim and ylim can squeeze the  plot in suitable directions

Combined with what you are alread aware of, I think these should do the 
trick.


-- 
   O__  ---- Peter Dalgaard             Øster Farimagsgade 5, Entr.B
  c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
 (*) \(*) -- University of Copenhagen   Denmark      Ph:  (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)              FAX: (+45) 35327907



More information about the R-help mailing list