How to overlay lines and rectangles in lattice plot key
I think the intended appearance is closer to this
xyplot(Sepal.Length + Sepal.Width ~ Petal.Length + Petal.Width,
iris,
type = c("p", "r"),
jitter.x = TRUE,
jitter.y = TRUE,
factor = 5,
key = list(between=c(-4.5),
column=4,
text=list(lab=paste0(" ", letters[1:4], " ")),
lines=list(col=1:4, pch=1:4, type='b'),
rectangles=list(col=1:4, alpha=0.25, border=FALSE)
)
)
I have the partial overlap of the rectangles and the line-point objects.
They don't align correctly. I think even more complex grid usage is needed than
Duncan provided.
Rich
On Thu, Dec 29, 2016 at 12:16 AM, Duncan Mackay <dulcalma at bigpond.com> wrote:
Hi
Is this something like what you are looking for?
I have put it on the right and heights etc are just a quick guess. (all i
have time for)
It may be a little too complicated for what you want but I thought of this
first based on your description rather than the plot.
library(grid)
library(lattice)
# legend
XY04.glay <-
grid.layout(nrow = 8,
ncol = 2,
heights = unit(rep(1, 2), rep("cm", 2)),
widths = unit(c(0.4, 0.8),
c("in","in")),
just = "centre")
XY04.fmG <- frameGrob(layout = XY04.glay)
k <-0
for (j in seq(1,8,2)){
k = k+1
XY04.fmG <-
placeGrob(XY04.fmG, textGrob(lab = letters[1:4][k],
just = 0,
gp = gpar(cex = 0.8)), row = j, col = 1)
XY04.fmG <-
placeGrob(XY04.fmG, linesGrob(c(0.2,0.8), c(0.5, 0.5),
gp = gpar(col = c(1:4)[k])), row = j, col = 2)
XY04.fmG <-
placeGrob(XY04.fmG, pointsGrob(c(0.2,0.8), c(0.5, 0.5),
pch = j,
gp = gpar(cex = 0.7, col = c(1:4)[k])), row =
j, col = 2)
}
k = 0
for (j in seq(2,8,2)){
k = k+1
XY04.fmG <-
placeGrob(XY04.fmG, rectGrob(width = 0.6,
gp = gpar(col=k,
alpha = 0.25,
fill = k)), row = j, col = 2)
}
xyplot(Sepal.Length + Sepal.Width ~ Petal.Length + Petal.Width,
iris,
type = c("p", "r"),
jitter.x = TRUE,
jitter.y = TRUE,
factor = 5,
legend = list(right = list(fun = XY04.fmG))
)
Have a look at https://stat.ethz.ch/pipermail/r-help/2005-April/069459.html
and the following emails on the thread.
Regards
Duncan
Duncan Mackay
Department of Agronomy and Soil Science
University of New England
Armidale NSW 2351
Email: home: mackay at northnet.com.au
-----Original Message-----
From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of sbihorel
Sent: Thursday, 29 December 2016 13:51
To: r-help at r-project.org
Subject: [R] How to overlay lines and rectangles in lattice plot key
Hi,
I would like to create a custom key for a lattice xyplot in which line
elements are displayed on top of rectangle elements. In the example code
below, the lines and rectangles are shown side by side (the legend
itself is meaningless, but that is not the point). Is there a way to
overlay these key elements (but not the text)?
Thanks
xyplot(Sepal.Length + Sepal.Width ~ Petal.Length + Petal.Width,
iris,
type = c("p", "r"),
jitter.x = TRUE,
jitter.y = TRUE,
factor = 5,
key = list(
column=4,
text=list(lab=letters[1:4]),
lines=list(col=1:4, pch=1:4, type='b'),
rectangles=list(col=1:4, alpha=0.25, border=FALSE)
)
)
______________________________________________ R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see 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-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.