On 11/21/2005 10:33 AM, Martin Maechler wrote: >>>>>> "Jan" == Jan Verbesselt <[EMAIL PROTECTED]> >>>>>> on Mon, 21 Nov 2005 12:28:35 +0100 writes: > > Jan> Hi R-help, > Jan> We are using R 2.2 on Win XP and have a detail question on how the > Jan> legend can be optimised. > > Jan> We use the following; > -> plot(,type="b",...) > Jan> The lines in the plot do not cross the points. How can we obtain the > Jan> same effect in the legend? (points without a line through them..) > > not directly, however you can trick it, see below > > Jan> We tried setting the pt.bg to white but this did not help. > > I think it does help some.. read on > > Jan> See script below. > > par(mar=c(5,5,2,4) +.1) # dit om extra text in Y-as te plaatsen > plot(ts.X, type="b", col=1, pch=19,ylim=c(-0.4,0.2),ylab=c("X")) > legend.txt <- c("X","Y") > # Define how the legend looks like, place it on the right location > legend("topright", legend.txt,col=1,lty=1, pch=c(19,1),bty="n", pt.bg=1) > par(new=T) > plot(ts.Y, type="b", lty=1, col=1, pch=1, ylab="", > xlab="",yaxt="n",ylim=c(0.1,0.7)) > axis(4) > mtext(side=4, line=3, "Y", cex=1) > > > Unfortunately you don't give a reproducible example {we don't > have your ts.X and ts.Y}, so I make up a simpler version of > the above: > > ## A bivariate time-series > set.seed(1) > xy <- cbind(x = ts(cumsum(rnorm(47))), y = ts(cumsum(rt(47, df=3)))) > > plot(xy, plot.type = "single", type = "b", pch = 21, col=1:2, bg = "light > blue") > legend("topright", c("x","y"), col=1:2, lty="47", > pch = 21, bty="n", pt.bg="light blue") > > > I'm using pch=21 and I've used pt.bg just to show it's effect > here; of course you can play with these as well. > > And the real trick was to "play with" 'lty' using the nice "on/off" > convention ("47": a dash of length 4; a break of length 7). > > Now of course, we also might accept patches for improving > legend (source at > https://svn.R-project.org/R/trunk/src/library/graphics/R/legend.R ). > > Naturally, I think it's the argument 'merge' that > could be extended to allow something analogous to plot type = "b".
Are there any examples with "merge = FALSE" that look good? It seems to me that it would be a cleaner change to add a new parameter "type" that did what it does in plot(), and then eventually drop merge. If there really are examples with merge = FALSE that people want to keep, then we could keep it, but I still think adding "type" would be better than fiddling with merge. Of course, this suggestion isn't trivial to implement for "type = 'b'", where we'd want -- * -- in the legend, but I think it could be done with some sort of trickery involving 3 points with "type = 'c'" overlaid with one point with "type = 'p'". Duncan Murdoch ______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html