An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20131126/6d36694e/attachment.pl>
Append text to panels of lattice::barchart()
4 messages · Tim Sippel, Patrick Connolly, Duncan Mackay
On 2013-11-27 10:07, Tim Sippel wrote:
I could use a little help writing a panel function to append text to
each
panel of a lattice::barchart(). Below is a modified version of the
barley
dataset to illustrate.
data(barley)
# add a new variable called samp.size
barley$samp.size<-round(runif(n=nrow(barley), min=0, max=50),0)
# Below is a barchart plot for this example
barchart(yield ~ variety | site, data = barley,
groups = year, layout = c(1,6), stack = TRUE,
auto.key = list(space = "right"),
ylab = "Barley Yield (bushels/acre)",
scales = list(x = list(rot = 45)))
# I need to add to each panel the sum of samp.size by the groups
variable
(year) for that panel.
# So the text appended to the top panel (Waseca) might say "1931=15,
1932=20", and same for each subsequent panel.
All you need is to modify the levels associated with the site factor. Here's a trivial addition to give you the idea: levels(barley$site) <- paste(levels(barley$site), LETTERS[1:6]) Then the same call you used will work. Of course, you'll need to do a bit more than LETTERS[1:6] but I'm sure you know how to do that. HTH
[[alternative HTML version deleted]]
______________________________________________ R-help at r-project.org 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.
Hi
Try
barchart(yield ~ variety | site, data = barley,
groups = year, layout = c(1,6), stack = TRUE,
auto.key = list(space = "right"),
ylab = "Barley Yield (bushels/acre)",
scales = list(x = list(rot = 45)),
panel = function(x,y,...){
pnl = panel.number()
panel.barchart(x,y,...)
if (pnl == 6) grid.text("1931=15, 1932=20", 0.5, 0.88,
gp = gpar(cex = 0.8))
}
)
if you had as.table = TRUE as an argument pnl==1 would apply to the top
panel
you then have to repeat the line an amend the pnl == 6.
On a panel basis is easier than on a plot basis as the xy coordinates are
easily managed.
Another way is trellis.focus but possibly a little fiddlier
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-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On
Behalf Of Tim Sippel
Sent: Wednesday, 27 November 2013 07:08
To: r-help at r-project.org
Subject: [R] Append text to panels of lattice::barchart()
I could use a little help writing a panel function to append text to each
panel of a lattice::barchart(). Below is a modified version of the barley
dataset to illustrate.
data(barley)
# add a new variable called samp.size
barley$samp.size<-round(runif(n=nrow(barley), min=0, max=50),0) # Below is a
barchart plot for this example barchart(yield ~ variety | site, data =
barley,
groups = year, layout = c(1,6), stack = TRUE,
auto.key = list(space = "right"),
ylab = "Barley Yield (bushels/acre)",
scales = list(x = list(rot = 45))) # I need to add to each panel
the sum of samp.size by the groups variable
(year) for that panel.
# So the text appended to the top panel (Waseca) might say "1931=15,
1932=20", and same for each subsequent panel.
______________________________________________
R-help at r-project.org 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.
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20131126/25e848ed/attachment.pl>