An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20100420/60eb6338/attachment.pl>
the bar width of barchart plot in lattice package
6 messages · David Winsemius, Deepayan Sarkar, zhenjiang xu
On Apr 20, 2010, at 9:46 AM, zhenjiang xu wrote:
Dear R users,
I am trying to use the following code to make a barchar plot. The
bars in
the plot turn out to be a little narrow. Is there any way to modify
the
width of the bars? Thank you!
library(lattice)
scores = gl(2, 5, label=c('Sensitivity', 'PPV'), length = 100)
sequences = gl(5, 1, label=c('Lemna minor', 'Dugesia japonica A',
'Gymnosporangium sabinae', 'Hymeniacidon sanguinea', 'Streptomyces
griseus'), length = 100)
levels = gl(10, 10, label = c('Cycle 1', 'Cycle 2', 'Cycle 3',
'Cycle 4',
'Order 1', 'Order 2', 'Order 3', 'MaxPairs = 20', 'MaxPairs = Average
Length', 'MaxPairs = 500'))
factors = c(rep('Cycles', 40), rep('Order', 30), rep('MaxPairs', 30))
values = rnorm(100) # this is toy data
a = data.frame(values, scores, sequences, levels, factors)
bc.factors =
barchart(values ~ sequences | scores * factors , data = a,
groups = levels,
layout = c(2,3),
between = list(y=0.5),
clip = list(strip = 'off'),
par.strip.text = list(cex=0.7),
par.settings = list(fontsize=list(text=8)),
auto.key = list(rectangles = TRUE, space = 'right',
columns = 1),
draw.key = TRUE,
scales = list(x = list(rot = 45)))
?barchart Looking at the arguments to barchart in the help page I would have guessed that box.ratio would do what you want. Since that is clearly not reproducible code , (in the absence of test dataset of the appropriate structure) I suppose guessing will remain the level of my knowledge in this instance.
-- Best, Zhenjiang
David Winsemius, MD West Hartford, CT
1 day later
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20100421/f8e31789/attachment.pl>
On Apr 21, 2010, at 9:51 PM, zhenjiang xu wrote:
I tried that. It seems the bar width is already maximized, although there is a lot of space between groups of bars. Thank you anyway.
I apologize. It was reproducible code. I missed the "values"
assignment. There is also a box.width argument which does affect how
the plot gets drawn, but the effects do not appear salutory. It
appears that the alignment of the bars gets shifted relative to the
labels. The barchart function cannot seem to deal with the completity
of the 2 * 5 factor crossed with a c(3,3,4) factor. On the other hand
that problem seems to be present in the original plot as well. Maybe
you should re-think the structure of the data?
Compare:
bc.factors <-
barchart(values ~ sequences | scores * factors , data = a,
groups = levels,
layout = c(2,3), box.ratio=1, box.width=1.5,
between = list(y=0.5),
clip = list(strip = 'off'),
par.strip.text = list(cex=0.7),
par.settings = list(fontsize=list(text=8)),
auto.key = list(rectangles = TRUE, space = 'right', columns
= 1),
draw.key = TRUE,
scales = list(x = list(rot = 45)))
David.
>
> On Tue, Apr 20, 2010 at 10:16 AM, David Winsemius <dwinsemius at comcast.net
> > wrote:
>
> On Apr 20, 2010, at 9:46 AM, zhenjiang xu wrote:
>
> Dear R users,
>
> I am trying to use the following code to make a barchar plot. The
> bars in
> the plot turn out to be a little narrow. Is there any way to modify
> the
> width of the bars? Thank you!
>
> library(lattice)
> scores = gl(2, 5, label=c('Sensitivity', 'PPV'), length = 100)
> sequences = gl(5, 1, label=c('Lemna minor', 'Dugesia japonica A',
> 'Gymnosporangium sabinae', 'Hymeniacidon sanguinea', 'Streptomyces
> griseus'), length = 100)
> levels = gl(10, 10, label = c('Cycle 1', 'Cycle 2', 'Cycle 3',
> 'Cycle 4',
> 'Order 1', 'Order 2', 'Order 3', 'MaxPairs = 20', 'MaxPairs = Average
> Length', 'MaxPairs = 500'))
> factors = c(rep('Cycles', 40), rep('Order', 30), rep('MaxPairs', 30))
> values = rnorm(100) # this is toy data
> a = data.frame(values, scores, sequences, levels, factors)
> bc.factors =
> barchart(values ~ sequences | scores * factors , data = a,
> groups = levels,
> layout = c(2,3),
> between = list(y=0.5),
> clip = list(strip = 'off'),
> par.strip.text = list(cex=0.7),
> par.settings = list(fontsize=list(text=8)),
> auto.key = list(rectangles = TRUE, space = 'right', columns
> = 1),
> draw.key = TRUE,
> scales = list(x = list(rot = 45)))
>
>
> ?barchart
>
> Looking at the arguments to barchart in the help page I would have
> guessed that box.ratio would do what you want. Since that is clearly
> not reproducible code , (in the absence of test dataset of the
> appropriate structure) I suppose guessing will remain the level of
> my knowledge in this instance.
>
>
> --
> Best,
> Zhenjiang
>
> David Winsemius, MD
> West Hartford, CT
>
>
>
>
> --
> Best,
> Zhenjiang
David Winsemius, MD
West Hartford, CT
1 day later
On Wed, Apr 21, 2010 at 8:55 PM, David Winsemius <dwinsemius at comcast.net> wrote:
On Apr 21, 2010, at 9:51 PM, zhenjiang xu wrote:
I tried that. It seems the bar width is already maximized, although there is a lot of space between groups of bars. Thank you anyway.
I apologize. It was reproducible code. I missed the "values" assignment. There is also a box.width argument which does affect how the plot gets drawn, but the effects do not appear salutory. It appears that the alignment of the bars gets shifted relative to the labels. The barchart function cannot seem to deal with the completity of the 2 * 5 factor crossed with a c(3,3,4) factor. On the other hand that problem seems to be present in the original plot as well. Maybe you should re-think the structure of the data?
The problem is that levels is nested within factors:
xtabs(~levels + factors, a)
factors levels Cycles MaxPairs Order Cycle 1 10 0 0 Cycle 2 10 0 0 Cycle 3 10 0 0 Cycle 4 10 0 0 Order 1 0 0 10 Order 2 0 0 10 Order 3 0 0 10 MaxPairs = 20 0 10 0 MaxPairs = Average Length 0 10 0 MaxPairs = 500 0 10 0 I can't think of a meaningful design that would give the desired result here. -Deepayan
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20100423/74610ae7/attachment.pl>