[R] the bar width of barchart plot in lattice package

David Winsemius dwinsemius at comcast.net
Thu Apr 22 05:55:44 CEST 2010


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



More information about the R-help mailing list