[R] Background fill and border for a legend in dotplot

markm0705 markm0705 at gmail.com
Fri Sep 2 01:47:48 CEST 2011


Dear R help group

I've been working on this plot for a while now and now getting around to the
minor adjusments.  I would like to be able to put a border and background
fill around the legend in this plot.  

I understand the legend 'bty' should do this have this capablity but not
sure how the syntax works in this case

###### initalise
library("lattice")
library(latticeExtra) # for mergedTrellisLegendGrob()

##read the data to a variable
#----------------------------------------------------------------------------------------

Cal_dat <- read.table("Calibration2.dat",header = TRUE,sep = "\t",)

## set up plotting colours
#----------------------------------------------------------------------------------------
col.pat<-c("violet","cyan","green","red","blue","black","yellow") 
sym.pat<-c(19,20,21)

##set up the plot key
#----------------------------------------------------------------------------------------
key1 <-
   draw.key(list(text=list(levels(Cal_dat$Commodity)),
                 title="Ore type",
                 points=list(pch=22, cex=1.3, fill=col.pat, col="black")),
            draw = FALSE)
key2 <-
   draw.key(list(text=list(levels(factor(Cal_dat$Year))),
                 title="Year",
                 points = list(pch = c(21, 22, 23), cex=1.3, col="black")),
            draw = FALSE)

mkey <-
   mergedTrellisLegendGrob(list(fun = key2),
                           list(fun = key1),
                           vertical = TRUE
)	

##set some parameters for the plot
#----------------------------------------------------------------------------------------
trellis.par.set(
 	dot.line=list(col = "grey90", lty="dashed"),
	axis.line=list(col = "grey50"),
	axis.text=list(col ="grey50", cex=0.8),
	panel.background=list(col="transparent"),
	par.xlab.text= list(col="grey50"),	
)

## Create the dot plot
#----------------------------------------------------------------------------------------
with(Cal_dat,
    dotplot(reorder(paste(Mine,Company), Resc_Gt) ~ Resc_Gt,
            fill_var = Commodity,
            pch_var = factor(Year),
            cex=1.2,
            pch = c(21, 22, 23),
            col = "black",
            fill = col.pat,
            aspect = 2.0,
		alpha=0.6,
            legend = list(inside = list(fun = mkey,corner = c(0.95, 0.01))),
		scales = list(x = list(log = 10)), 
		xscale.components = xscale.components.log10ticks,
            origin = 0,
            type = c("p","a"), 
            main = "Mineral resources",
            xlab= "Total tonnes (billions)",
            panel = function(x, y, ..., subscripts,
                             fill, pch, fill_var, pch_var) {
                pch <- pch[pch_var[subscripts]]
                fill <- fill[fill_var[subscripts]]
                panel.dotplot(x, y, pch = pch, fill = fill, ...)
            }))

            panel = function(x, y, ..., subscripts,
                             fill, pch, fill_var, pch_var) {
                pch <- pch[pch_var[subscripts]]
                fill <- fill[fill_var[subscripts]]
                panel.dotplot(x, y, pch = pch, fill = fill, ...)
            }

http://r.789695.n4.nabble.com/file/n3785003/Calibration2.dat
Calibration2.dat 

--
View this message in context: http://r.789695.n4.nabble.com/Background-fill-and-border-for-a-legend-in-dotplot-tp3785003p3785003.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list