[R] barchart() {lattice} help.

Deepayan Sarkar deepayan.sarkar at gmail.com
Wed Dec 9 07:45:19 CET 2009


On Sun, Dec 6, 2009 at 8:53 AM, Peng Cai <pengcaimaillist at gmail.com> wrote:
> Please ignore my last question. I found a way to handle that. One last
> thing:
>
> I'm defining my own y scales. In the process the bar starts from below the
> "y=0" line (or below the y-axis). Is there a way to get rid of it.

Have you tried adding 'origin=0' ?

-Deepayan

>
> Here is the code and data I'm using
>  R Code (Data read in object "dta")
>
> dta$age <- factor(dta$age, levels = c("0--4", "5--14", "15--18"), ordered =
> TRUE)
> dta$race <- factor(dta$race, levels = c("White", "Black", "Other"))
> *yScale<-seq(0,1000,50)
> *library(lattice)
> barchart(dta$sum ~ dta$age | dta$gender,
>  data = dta,
>  groups = dta$race,
>  ylab = "Sum of admissions over 10 years (1996-2005)",
>  xlab = "Age",
>  par.settings = simpleTheme(col = c("green1", "yellow1", "orange")),
>  key = list(space="right",
>  cex=1,
>  text=list(levels(dta$race)),
>  rectangles=list(size=1.7, border="white", col = c("green1", "yellow1",
> "orange"))),
>  strip = strip.custom(bg="greenyellow"),
> * scales=list(y=list(rot=360, at=yScale), tck=c(1,0)),
>  panel=function(x,y,...)
>  {
>  panel.abline(h=c(yScale), col.line="gray")
>            panel.barchart(x,y,...)
>  }
> *)
>
>  Data:
>
> age gender  race sum
> 0--4 Female Black 145
> 0--4 Female Other  53
> 0--4 Female White  47
> 0--4   Male Black 286
> 0--4   Male Other 130
> 0--4   Male White  94
> 15--18 Female Black  30
> 15--18 Female Other   3
> 15--18 Female White   9
> 15--18   Male Black  21
> 15--18   Male Other   2
> 15--18   Male White   3
> 5--14 Female Black 138
> 5--14 Female Other  31
> 5--14 Female White  23
> 5--14   Male Black 199
> 5--14   Male Other  65
> 5--14   Male White  29
>
> Thanks,
> Peng
>
>
> On Sun, Dec 6, 2009 at 11:47 AM, Peng Cai <pengcaimaillist at gmail.com> wrote:
>
>> Thank you Uwe, Dennis, and Gary for your help. I have one more question:
>>
>> I'm using pre-defined y-scales and trying to create grid lines.
>>
>> As "Female" category has low sum value, its y-axis range from 0-150 whereas
>> "Male" ranges from 0-300. Is it possible to make them on same scale. Here is
>> the previous code with an additional yScale code.
>>
>> R Code (Data read in object "dta")
>>
>> dta$age <- factor(dta$age, levels = c("0--4", "5--14", "15--18"), ordered =
>> TRUE)
>> dta$race <- factor(dta$race, levels = c("White", "Black", "Other"))
>> *yScale<-seq(0,1000,50)
>> *library(lattice)
>> barchart(dta$sum ~ dta$age | dta$gender,
>>  data = dta,
>>  groups = dta$race,
>>  stack = FALSE,
>>  aspect=0.6,
>>  layout=c(2,1),
>>
>>  ylab = "Sum of admissions over 10 years (1996-2005)",
>>  xlab = "Age",
>>  par.settings = simpleTheme(col = c("green1", "yellow1", "orange")),
>>  key = list(space="right",
>>   cex=1,
>>   text=list(levels(dta$race)),
>>   rectangles=list(size=1.7, border="white", col = c("green1", "yellow1",
>> "orange"))),
>>   strip = strip.custom(bg="greenyellow"),
>> * scales=list(relation="free", y=list(rot=360, at=yScale)),
>>  panel=function(x,y,...)
>>  {
>>   panel.abline(h=c(yScale), col.line="gray")
>>             panel.barchart(x,y,...)
>>  }  *
>> )
>>
>>
>> Data:
>>
>> age gender  race sum
>> 0--4 Female Black 145
>> 0--4 Female Other  53
>> 0--4 Female White  47
>> 0--4   Male Black 286
>> 0--4   Male Other 130
>> 0--4   Male White  94
>> 15--18 Female Black  30
>> 15--18 Female Other   3
>> 15--18 Female White   9
>> 15--18   Male Black  21
>> 15--18   Male Other   2
>> 15--18   Male White   3
>> 5--14 Female Black 138
>> 5--14 Female Other  31
>> 5--14 Female White  23
>> 5--14   Male Black 199
>> 5--14   Male Other  65
>> 5--14   Male White  29
>>
>> Thanks,
>> Peng
>>
>>   On Sun, Dec 6, 2009 at 11:18 AM, Gary Miller <mail2garymiller at gmail.com>wrote:
>>
>>> Thanks Uwe, I got your suggestions part too.
>>>
>>> 2009/12/6 Uwe Ligges <ligges at statistik.tu-dortmund.de>
>>>
>>> >
>>> >
>>> > Peng Cai wrote:
>>> >
>>> >> Hi,
>>> >>
>>> >> I'm plotting grouped barplot using following code and data. I need help
>>> >> with
>>> >> re-ordering the labels.
>>> >>
>>> >> 1. On x-axis the factor "AGE" is grouped in order "0--4", "15--18",
>>> >> "5--14";
>>> >> whereas I would like to have it in "0--4", "5--14", "15--18".
>>> >>
>>> >> 2. If I need to re-order "RACE" variable. How can I do it assuming I
>>> need
>>> >> to
>>> >> change it on both the x-axis and legend. Currenlty the order is
>>> >> "Black","Other","White"; whereas I would like "White", "Black",
>>> "Other".
>>> >>
>>> >> Can anyone help please. I'm using following code, which is working fine
>>> >> except above issues.
>>> >>
>>> >> Code:
>>> >>
>>> >> library(lattice)
>>> >>
>>> >
>>> > To answer your question:
>>> >
>>> >  dta$age <- factor(dta$age, levels = c("0--4", "5--14", "15--18"),
>>> >                   ordered = TRUE)
>>> >  dta$race <- factor(dta$race, levels = c("White", "Black", "Other"))
>>> >
>>> >  library(lattice)
>>> >
>>> >  barchart(sum ~ age | gender, data = dta, groups = race,
>>> >   stack = FALSE,
>>> >   ylab = "Sum of admissions over 10 years (1996-2005)",
>>> >   xlab = "Age",
>>> >   par.settings = simpleTheme(col = c("green1", "yellow1", "orange")),
>>> >   key = list(space="right", cex=1, text=list(levels(dta$race)),
>>> >
>>> >              rectangles=list(size=1.7, border="white",
>>> >                              col = c("green1", "yellow1", "orange"))),
>>> >   strip = strip.custom(bg="greenyellow")
>>> > )
>>> >
>>> >
>>> >
>>> >
>>> >  ################### assuming data is read in object name "dta".
>>> >> attach(dta)
>>> >>
>>> >
>>> >
>>> > Other comments:
>>> >
>>> > 1. You do not need attach at all here - and I recommend not to use it
>>> > unless you really know what you are doing and you really need it.
>>> > 2. you might want to choose more appropriate colours.
>>> >
>>> > Best,
>>> > Uwe Ligges
>>> >
>>> >
>>> >
>>> > barchart(sum ~ age | gender, data = dta,
>>> >>            groups = race,
>>> >>  stack = FALSE,
>>> >>  ylab="Sum of admissions over 10 years (1996-2005)",
>>> >>  xlab="Age",
>>> >>  par.settings=simpleTheme(col = c("green1", "yellow1", "orange")),
>>> >>  key=list(space="right", cex=1,
>>> >>  text=list(c("Black","Other","White")),
>>> >>  rectangles=list(size=1.7, border="white", col = c("green1", "yellow1",
>>> >> "orange"))),
>>> >>  strip = strip.custom(bg="greenyellow")
>>> >> )
>>> >> detach(dta)
>>> >>
>>> >> Data:
>>> >> age gender  race sum
>>> >> 0--4 Female Black 145
>>> >> 0--4 Female Other  53
>>> >> 0--4 Female White  47
>>> >> 0--4   Male Black 286
>>> >> 0--4   Male Other 130
>>> >> 0--4   Male White  94
>>> >> 15--18 Female Black  30
>>> >> 15--18 Female Other   3
>>> >> 15--18 Female White   9
>>> >> 15--18   Male Black  21
>>> >> 15--18   Male Other   2
>>> >> 15--18   Male White   3
>>> >> 5--14 Female Black 138
>>> >> 5--14 Female Other  31
>>> >> 5--14 Female White  23
>>> >> 5--14   Male Black 199
>>> >> 5--14   Male Other  65
>>> >> 5--14   Male White  29
>>> >>
>>> >> Thanks,
>>> >> Peng
>>> >>
>>> >>        [[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<http://www.r-project.org/posting-guide.html>
>>> <http://www.r-project.org/posting-guide.html>
>>> >> and provide commented, minimal, self-contained, reproducible code.
>>> >>
>>> >
>>> > ______________________________________________
>>> > 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<http://www.r-project.org/posting-guide.html>
>>> <http://www.r-project.org/posting-guide.html>
>>>  > and provide commented, minimal, self-contained, reproducible code.
>>> >
>>>
>>>        [[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<http://www.r-project.org/posting-guide.html>
>>> and provide commented, minimal, self-contained, reproducible code.
>>>
>>
>>
>
>        [[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.
>



More information about the R-help mailing list