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 <ehl...@ucalgary.ca> wrote: > From: Peter Ehlers <ehl...@ucalgary.ca> > Subject: Re: [R] Plotting color.legend() outside of plot region > To: "Tim Clark" <mudiver1...@yahoo.com> > Cc: r-help@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@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. > > > > > ______________________________________________ R-help@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.