[R] Legend box line thickness

2006-08-29 Thread Philip Turk
I am making a plot and am merely trying to increase the line thickness, or
width, of the box drawn around the legend.  The help page on 'legend' was of
no use.  Does anyone have any ideas?   


[[alternative HTML version deleted]]

__
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
and provide commented, minimal, self-contained, reproducible code.


[R] Legend box line thickness

2006-08-28 Thread Phil Turk
I am merely trying to increase the line thickness, or line width, of the box 
drawn around the legend in a plot I am constructing.  The help page on 
'legend' was of no use.  Does anyone have an idea on how to do this?  Please 
respond to [EMAIL PROTECTED]  Thanks!

__
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
and provide commented, minimal, self-contained, reproducible code.


Re: [R] Legend box line thickness

2006-08-28 Thread Marc Schwartz
On Mon, 2006-08-28 at 17:55 -0700, Phil Turk wrote:
 I am merely trying to increase the line thickness, or line width, of the box 
 drawn around the legend in a plot I am constructing.  The help page on 
 'legend' was of no use.  Does anyone have an idea on how to do this?  Please 
 respond to [EMAIL PROTECTED]  Thanks!

There are two options.

The easier one is not immediately evident from the help page and
requires reviewing the R code for the legend function, which reveals
that there is an internal function called rect2(), which is built on top
of rect(). It is this function that draws the outer box.

The help page for rect() shows that the line width argument 'lwd' in the
function defaults to par(lwd). See ?par for more information.

Thus using:

  par(lwd = SomethingGreaterThan1)

before the call to legend will set the box to a wider line thickness.

Be sure to set par(lwd = 1) before any other plot calls to return to the
default setting.



Second, the Value section of ?legend clearly indicates:


Value

A list with list components

rect
a list with components 
w, h
positive numbers giving
width and height of the
legend's box.
left, top
x and y coordinates of upper
left corner of the box.
text
a list with components 
x, y
numeric vectors of length
length(legend), giving the x
and y coordinates of the
legend's text(s).

returned invisibly.



Thus, expanding on the third example in ?legend:

## right-justifying a set of labels: thanks to Uwe Ligges
x - 1:5; y1 - 1/x; y2 - 2/x
plot(rep(x, 2), c(y1, y2), type=n, xlab=x, ylab=y)
lines(x, y1); lines(x, y2, lty=2)

# Key call here
temp - legend(topright, legend = c( ,  ),
   text.width = strwidth(1,000,000),
   lty = 1:2, xjust = 1, yjust = 1,
   title = Line Types)

text(temp$rect$left + temp$rect$w, temp$text$y,
 c(1,000, 1,000,000), pos=2)


# Now do the legend box using a wide line:
rect(temp$rect$left, temp$rect$top - temp$rect$h, 
 temp$rect$left + temp$rect$w, temp$rect$top + temp$rect$h, lwd = 2)


It would not seem unreasonable to add new arguments to legend(), perhaps
calling them box.lwd and box.lty, which can then be passed to the
rect2() internal function call for the box by modifying the existing
call to:

 rect2(left, top, dx = w, dy = h, col = bg, density = NULL, 
   lwd = box.lwd, lty = box.lty)


HTH,

Marc Schwartz

__
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
and provide commented, minimal, self-contained, reproducible code.