Re: [Rd] legend's arguments "angle", "density" & "lwd" (PR#7023)

From: Martin Maechler <>
Date: Tue 24 Aug 2004 - 00:20:52 EST

>>>>> "UweL" == Uwe Ligges <> >>>>> on Fri, 20 Aug 2004 19:44:40 +0200 writes:

    UweL> Martin Maechler wrote:
    >>>>>>> "UweL" == Uwe Ligges <>
    >>>>>>> on Fri, 20 Aug 2004 17:01:13 +0200 writes:


    UweL> Paul Murrell wrote [on 2002-03-14 with Subject: "filled bars with     UweL> patterns" in reply to Arne Mueller]
>> >> Hi
>> >>
>> >> <snip>
>> >>
>> >>> I'd also like to have the filled boxes in the legend to be striped. The
>> >>> legend function has a 'density' attribute, but unfortunately this does't
>> >>> seem to do anything
>> >>>
>> >>> following the above example
>> >>>
>> >>> legend(3.4, 5, c('Axx','Bxx','Cxx','Dxx'), fill = c('red', 'blue',
>> >>> 'green', 'orange'))
>> >>>
>> >>> is the same as
>> >>>
>> >>> legend(3.4, 5, c('Axx','Bxx','Cxx','Dxx'), density=10,
>> >>> fill = c('red', 'blue', 'green', 'orange'),
>> >>> density=c(10,-1,20, 200))

>> >> This appears to be a bug. Can you file a bug report for this please?

    UweL> [SNIP; I cannot find any related bug report in the repository]

    UweL> I'm just reviewing bug reports and other stuff re. legend() and found     UweL> this old message in one of my Next-Week-To-Do-folders.

    UweL> Well, the point mentioned above is not really a bug,
    UweL> because one has to specify BOTH arguments, angle AND
    UweL> density in legend(). Is there any point not to make
    UweL> angle = 45 the default, as it already is for polygon()
    UweL> and rect()?

    MM> This seems like a good idea,

    MM> but we'll wait for your many other patches to legend.R and     MM> legend.Rd :-)
    UweL> Just three rather than many issues I'm trying to address, the third one 
    UweL> is just closing a bug report. ;-)
    UweL> Here the two suggested patches in merged form.

    UweL> Uwe

    <........... snipping Uwe's patches .........>

This has now lead to more:
I've just added to NEWS (and the C and R sources of course)

    o	plot.xy(), the workhorse function of points, lines and plot.default
	now has 'lwd' as explicit argument instead of implicitly in "...",
	and now recycles lwd where it makes sense, i.e. for line based plot

such that Uwe's proposed new argument to legend(), pt.lwd is also recycled and now can default to 'lwd', the line width of the line segments in legend().
Hence, Leslie's original feature request (PR#7023) of June 25 is now also fulfilled using only 'lwd' and not both 'lwd' and 'pt.lwd'. I.e., the following now works

x <- 1:10 ; y <- rnorm(10,10,5) ; y2 <- rnorm(10,8,4) plot(x, y, bty="l", lwd=3, type="o", col=2, ylim = range(y,y2), cex=1.5) points(x, y2, lwd=3, lty=8, col=4, type="o", pch=2, cex=1.5) legend(10, max(y, y2), legend=c("Method 1","Method 2"),

       col=c(2, 4), lty=c(1, 8), pch=c(1, 2), 
       xjust=1, yjust=1, pt.cex=1.5, lwd=3)

[note that I've used 'ylim = range(y,y2)' which is slightly better than  'ylim = c(min(y,y2),max(y,y2))']

With thanks to Uwe!
Martin mailing list Received on Tue Aug 24 00:32:45 2004

This archive was generated by hypermail 2.1.8 : Wed 03 Nov 2004 - 22:45:08 EST