Thanks Deepayan!
Your solution does excatly what I want.
Further experiments and thoughts on my side brought me also to a
solution.
If I use the option rep=FALSE, and plot the bullit with lines and
split the lines argument into two groups it gives me the same result,
as every item in the key list starts a new column.
library(lattice)
key - list( rep=FALSE,
lines=list(col=c(red, blue), type=c(p,l),
pch=19),
text=list(lab=c(John,Paul)),
lines=list(col=c(green, red), type=c(l, l)),
text=list(lab=c(George,Ringo)),
rectangles = list(col= #CC, border=FALSE),
text=list(lab=The Beatles),
)
xyplot(1~1, key=key)
But your solution is much more felxible!
Kind Regards
Markus
-Original Message-
LNSCNTMCS01***
The information in this E-Mail and in any attachments is CONFIDENTIAL and may
be privileged. If you are NOT the intended recipient, please destroy this
message and notify the sender immediately. You should NOT retain, copy or use
this E-mail for any purpose, nor disclose all or any part of its contents to
any other person or persons.
Any views expressed in this message are those of the individual sender, EXCEPT
where the sender specifically states them to be the views of Lloyd's.
Lloyd's may monitor the content of E-mails sent and received via its
network for viruses or unauthorised use and for other lawful
business purposes.
Lloyd's is authorised under the Financial Services and Markets Act 2000
From: Deepayan Sarkar [mailto:[EMAIL PROTECTED]
Sent: 14 April 2005 16:01
To: r-help@stat.math.ethz.ch
Cc: Gesmann, Markus
Subject: Re: [R] Legend in xyplot two columns
On Thursday 14 April 2005 05:30, Gesmann, Markus wrote:
Dear R-Help
I have some trouble to set the legend in a xyplot into two rows.
The code below gives me the legend in the layout I am looking for, I
just rather have it in two rows.
library(lattice)
schluessel - list(
points=list( col=red, pch=19, cex=0.5 ),
text=list(lab=John),
lines=list(col=blue),
text=list(lab=Paul),
lines=list(col=green),
text=list(lab=George),
lines=list(col=orange),
text=list(lab=Ringo),
rectangles = list(col= #CC, border=FALSE),
text=list(lab=The Beatles),
)
xyplot(1~1, key=schluessel)
The next code gives me two rows, but repeates all the points,lines,
and rectangles.
schluessel2 - list(
points=list( col=red, pch=19, cex=0.5 ),
lines=list(col=c(blue, green, orange)),
rectangles = list(col= #CC, border=FALSE),
text=list(lab=c(John,Paul,George,Ringo, The
Beatles)),
columns=3,
)
xyplot(1~1, key=schluessel2)
So I think each list has to have 6 items, but some with no content.
How do I do this?
You could try using col=transparent to suppress things, but that's not
a very satisfactory solution. The function to create the key is simply
not designed to create unstructured legends like this. However, you can
create an use an arbitrary ``grob'' (grid graphics object) for a
legend, e.g.:
##-
library(grid)
library(lattice)
fl -
grid.layout(nrow = 2, ncol = 6,
heights = unit(rep(1, 2), lines),
widths =
unit(c(2, 1, 2, 1, 2, 1),
c(cm, strwidth, cm,
strwidth, cm, strwidth),
data = list(NULL, John, NULL,
George, NULL, The Beatles)))
foo - frameGrob(layout = fl)
foo - placeGrob(foo,
pointsGrob(.5, .5, pch=19,
gp = gpar(col=red, cex=0.5)),
row = 1, col = 1)
foo - placeGrob(foo,
linesGrob(c(0.2, 0.8), c(.5, .5),
gp = gpar(col=blue)),
row = 2, col = 1)
foo - placeGrob(foo,
linesGrob(c(0.2, 0.8), c(.5, .5),
gp = gpar(col=green)),
row = 1, col = 3)
foo - placeGrob(foo,
linesGrob(c(0.2, 0.8), c(.5, .5),
gp = gpar(col=orange)),
row = 2, col = 3)
foo - placeGrob(foo,
rectGrob(width = 0.6,
gp = gpar(col=#CC,
fill = #CC)),
row = 1, col = 5)
foo - placeGrob(foo,
textGrob(lab = John),
row = 1, col = 2)
foo - placeGrob(foo,
textGrob(lab = Paul),
row = 2, col = 2)
foo - placeGrob(foo,
textGrob(lab = George),
row = 1, col = 4)
foo - placeGrob(foo