Making legend() look like my plot()
Hi
Uwe Ligges wrote:
Dan Bolser wrote:
On Fri, 26 Nov 2004, Martin Maechler wrote:
"Dan" == Dan Bolser <dmb at mrc-dunn.cam.ac.uk> on Thu, 25 Nov 2004 22:35:22 +0000 (GMT) writes:
Dan> On Thu, 25 Nov 2004, Uwe Ligges wrote:
>> Dan Bolser wrote:
>>> Is this an impossible task?
>>> >>> How about just problem 2 below, having one pch in one
>>> legend entry, but no pch in the second?
>> Please be at least a little bit patient! This is not a >> hotline! People are not working 24 hours a day just to >> answer your questions at once - they are answering >> questions on a voluntary basis!
>> >> answer 1) is not straightforward, but you might want to
>> use one of fillable symbols mentioned in ?points, >> e.g. number 21
>> >> answer 2) pch = c(1, NA) should do the trick. >> >> legend(....., pch=c(21,NA), lwd=c(1,3), lty=c(1,3),
>> pt.bg="white", col=1:2)
Dan> Ahhh... I tried pch=c(1,NULL), pt.bg='white' Dan> I couldn't work out what was going on.. hmm, really,... at least you could have tried to see what c(1,NULL) is, by just "typing it at the prompt" !
Too long at the SQL prompt made me think it was immutably correct. That and the fact that c(1,'') was making both pch dissapear made me think the whole thing was messed up. How come legend isn't ablt to auto detect the line types in my plot and add them automatically? Is this just an issue of 'that would be cool if I had time', or is it more fundamental?
It is really fundamental! [Maybe not that fundamental for lattice as for base graphics.]
For example, ...
xyplot(Sepal.Length + Sepal.Width ~ Petal.Length + Petal.Width |
Species,
data = iris, scales = "free", layout = c(2, 2),
auto.key = TRUE)
... and even in traditional graphics there are some automated legends ...
a <- expand.grid(1:20, 1:20)
b <- matrix(a[,1] + a[,2], 20)
filled.contour(x = 1:20, y = 1:20, z = b)
... but this is only really possible when an entire plot is produced
from a single function call (so everything is known about the plot at
once). The general problem is that R tries to be useful by allowing you
to add extra lines, points, ... to any part of a plot, but the price of
this flexibility is that R has no idea what is actually a data series in
a plot and what is just some piece of decoration. With the grid
graphics package, it is possible to build up a graphical object
representing a plot, so it might then be possible to make the
distinction between output representing data series and other stuff;
and here we encounter your previous statement, 'that would be cool if I
had time' :)
Paul
Dr Paul Murrell Department of Statistics The University of Auckland Private Bag 92019 Auckland New Zealand 64 9 3737599 x85392 paul at stat.auckland.ac.nz http://www.stat.auckland.ac.nz/~paul/