Dear lettice gurus, the code below works just fine to produce a dotplot. However, I am not successful changing the color of the lines in the legend (auto.key). If I add col=..., it only changes the color of the letters in the legend, but not the color of the lines. Really appreciate any advice on that! Dimitri library(lattice) d=data.frame(xx=c(2.2,2.1,3.3),yy=c(0.1,0.2,0.3),zz=c(2.5,2.0,1.8)) d[[2]]<-as.factor(d[[2]]) dotplot(c(d[[1]],d[[3]])~rep(d[[2]],2),groups=rep(c("Group 1","Group 2"),each=nrow(d)),main=list("Chart Title",cex=1), xlab=list("Title for X",cex=.9,font=2), ylab=list("Title for Y",cex=.9,font=2), auto.key = list(space = "top", points = T, lines = T,cex=.9), panel = function(y,x,...){ panel.grid(h = -1, v = -1, col = "gray", lty ="dotted", ltx="dotted") panel.superpose(x,y,..., type="b",col.line=c("blue","red"),pch=20,cex=1.3, col=c("blue","red"),bg=c("blue","red"),lwd=2) ltext(x, y, labels=round(y,3), cex=.8,col="black",font=2,adj=c(-0.2,1)) # adds labels to those circles # pos=2, panel.abline(h=0) } ) -- Dimitri Liakhovitski MarketTools, Inc. Dimitri.Liakhovitski at markettools.com
Dimitri Liakhovitski <ld7631 <at> gmail.com> writes:> the code below works just fine to produce a dotplot. However, I am not > successful changing the color of the lines in the legend (auto.key). > If I add col=..., it only changes the color of the letters in the > legend, but not the color of the lines.I prefer to set pch and friends outside the panel function to avoid clutter, and to set the parameters globally, thus forcing my plots to be similar. This is a matter of taste, though. On Windows, the key looks a bit ugly now. Group 1 o ---- Group 2 o----- I am not very happy that the lwd is not honored by the key. Lines in lwd 2 (plot) and in lwd 1 (default key) do have a quite different subjective color hue. Any way around this, Deepayan? (Besides using ggplot2, as Hadley would argue ??) Dieter library(lattice) d=data.frame(xx=c(2.2,2.1,3.3),yy=c(0.1,0.2,0.3),zz=c(2.5,2.0,1.8)) d[[2]]<-as.factor(d[[2]]) sp = trellis.par.get("superpose.line") sp$col=c("blue","red") trellis.par.set("superpose.line",sp) dotplot(c(d[[1]],d[[3]])~rep(d[[2]],2),groups=rep(c("Group 1","Group 2"),each=nrow(d)),main=list("Chart Title",cex=1), type="b",pch=20,cex=1.3,lwd=2, xlab=list("Title for X",cex=.9,font=2), ylab=list("Title for Y",cex=.9,font=2), auto.key = list(space = "top", points = T, lines = T,cex=.9), panel = function(y,x,...) { panel.grid(h = -1, v = -1, col = "gray", lty ="dotted", ltx="dotted") panel.superpose(x,y,... ) ltext(x, y, labels=round(y,3),cex=.8,col="black",font=2, adj=c(-0.2,1)) } )