[R] Sorting order of reorder with multiple variables

markm0705 markm0705 at gmail.com
Thu Aug 25 14:45:33 CEST 2011


I've been building a ranked dot plot for several days now and am sorting the
data using the reorder command.  What I don't understand is how reorder
works when mutiple varibles are plotted by grouping.  In the example below
I'm using re-order to sort by a variable name Resv_Prop, but I'm plotting up
to three different values of Resv_prop (different Year values) for each
factor.

The results are not what i expected and I would like to control the sorting
by the 2010 Year values.

Any assistance greatly appreciated (Data file is attached)

(out of interst this code also has a very neat solution for plotting two
different keys - code by Deepayan Sarkar)

## 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)
#list(levels(Cal_dat$Year)

##set up the plot keys
key1 <-
   draw.key(list(text=list(levels(Cal_dat$Commodity)),
                 title="Ore type",
                 points=list(pch=21, 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 = "grey90"),
	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), Resv_Prop) ~ Resv_Prop,

            fill_var = Commodity,
            pch_var = factor(Year),
            cex=1.2,
            pch = c(21, 22, 23),

            col = "black",
            fill = col.pat,
            aspect = 2.0,
            ## key = plot.key,

            legend = list(inside = list(fun = mkey, corner = c(1, 0))),

            origin = 0,
            type = c("p"),
            main = "Reserve Proportion",

            xlab= "Proportion of Total Resource",
            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/n3768125/Calibration2.dat
Calibration2.dat 

--
View this message in context: http://r.789695.n4.nabble.com/Sorting-order-of-reorder-with-multiple-variables-tp3768125p3768125.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list