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.