[R] Plotting color.legend() outside of plot region
Tim Clark
mudiver1200 at yahoo.com
Tue Dec 1 00:02:13 CET 2009
Peter,
Thanks, layout() does exactly what I want. Now I also realize why I wasn't able to get the legend where I wanted it. I didn't realize par(xpd=...) was only for the last plot. That explains why I was getting weird results when trying to move my legend around!
Aloha,
Tim
Tim Clark
Department of Zoology
University of Hawaii
--- On Mon, 11/30/09, Peter Ehlers <ehlers at ucalgary.ca> wrote:
> From: Peter Ehlers <ehlers at ucalgary.ca>
> Subject: Re: [R] Plotting color.legend() outside of plot region
> To: "Tim Clark" <mudiver1200 at yahoo.com>
> Cc: r-help at r-project.org
> Date: Monday, November 30, 2009, 12:28 PM
>
> Tim Clark wrote:
> > Dear List,
> >
> > I am trying to plot a color.legend() in the right
> outer margin of my device region. I have read multiple
> threads on the subject and still can't get it right. I
> have stolen an example from one of the threads to
> demonstrate my problem. I have extended the outer
> margin using par(oma()), and have used par(xpd=NA) to tell
> it to plot in the device region. I can get the legend
> to plot in the figure region but it will not plot in the
> outer margin. What am I doing wrong? Example
> follows with the legend in the figure region. I would
> like it more to the right in the device region.
> > Thank,
> >
> > Tim
> >
> > library(TeachingDemos)
> > op <- par(mfrow = c(3,3), ## split region
> > oma =
> c(0,0,4,12) + 0.1, ## create outer margin
> > mar =
> c(5,4,2,2) + 0.1) ## shrink some margins
> > plot(1:10, main = "a", pch = 1:2, col= 1:2)
> > plot(1:10, main = "b", pch = 1:2, col= 1:2)
> > tmp1 <- cnvrt.coords( 0.5, 0, input='plt' )$tdev #
> save location for mtext
> > plot(1:10, main = "c", pch = 1:2, col= 1:2)
> > plot(1:10, main = "d", pch = 1:2, col= 1:2)
> > plot(1:10, main = "e", pch = 1:2, col= 1:2)
> > plot(1:10, main = "f", pch = 1:2, col= 1:2)
> > plot(1:10, main = "g", pch = 1:2, col= 1:2)
> > plot(1:10, main = "h", pch = 1:2, col= 1:2)
> > plot(1:10, main = "i", pch = 1:2, col= 1:2)
> > ## title
> > mtext("My Plots", side = 3, outer = TRUE, font = 2,
> line = 1, cex = 1.2,at=tmp1$x)
> >
> >
> > ## draw legend
> > #Set colors
> > Satelite.Palette <-
> colorRampPalette(c("blue3","cyan","aquamarine","yellow","orange","red"))
> > mycol<-Satelite.Palette(101)
> > #Add legend
> > BL<-unlist(corner.label(x=-1,y=-1,figcorner=FALSE))
> #Coordinates for bottom left corner of plot
> > TR<-unlist(corner.label(x=1,y=1,figcorner=FALSE))
> #Coordinates for top right corner of plot
> >
> > par(xpd=NA) #Plots to the device
> region (outer margin)
> > library(plotrix)
> > col.labels<-seq(0,100,20)
> > color.legend(TR[1],BL[2],TR[1]+1,TR[2],col.labels,mycol,align="rb",gradient="y")
> >
> > #Reset par
> > par(op)
> >
> The par(xpd=...) only applies to the last plot. I can't
> think offhand how to avoid that. I would use Paul
> Murrell's
> handy layout() function. Something like this (you'll have
> to adjust margins, etc)
>
> m <- matrix(c(1:9,10,10,10), 3, 4)
> nf <- layout(m)
> layout.show(nf)
>
> plot(1:10, main = "a", pch = 1:2, col= 1:2)
> plot(1:10, main = "b", pch = 1:2, col= 1:2)
> plot(1:10, main = "c", pch = 1:2, col= 1:2)
> plot(1:10, main = "d", pch = 1:2, col= 1:2)
> plot(1:10, main = "e", pch = 1:2, col= 1:2)
> plot(1:10, main = "f", pch = 1:2, col= 1:2)
> plot(1:10, main = "g", pch = 1:2, col= 1:2)
> plot(1:10, main = "h", pch = 1:2, col= 1:2)
> plot(1:10, main = "i", pch = 1:2, col= 1:2)
>
> plot(0:1, 0:1, type="n", axes=F, xlab="", ylab="")
> color.legend(.2,.2,.8,.8, col.labels, mycol, align="rb",
> gradient="y")
>
> See ?layout
>
> -Peter Ehlers
>
> >
> >
> >
> >
> > Tim Clark
> > Department of Zoology University of Hawaii
> >
> > ______________________________________________
> > R-help at r-project.org
> mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> > and provide commented, minimal, self-contained,
> reproducible code.
> >
> >
>
More information about the R-help
mailing list