[R] Question about barplot: gridlines & value labels

Dimitri Liakhovitski ld7631 at gmail.com
Mon May 18 20:46:46 CEST 2009


Thanks a lot - I am trying it with lattice now

On Sat, May 16, 2009 at 10:44 PM, Duncan Mackay <mackay at northnet.com.au> wrote:
> Dimitri
>
> You mentioned lattice so I presumed that you tried a barchart in lattice
>
> if you found the class of table.a.percents will it comply with the lattice
> requirements of the data type ?
>  class(table.a.percents)
> [1] "matrix"
>
> Using the lattice package and converting to a data.frame
> x <- data.frame(Group = rep(paste("Group", 1:4), 5), a =
> rep(1:5,each=4),percentage = as.vector(table.a.percents))
>  barchart(percentage~a,x,groups = Group, horizontal = F, auto.key = T, ylim
> = c(0,60))
>
> will get you started in lattice, and customize as required
> see also ?make.groups
>
> PS ?sweep may be of interest in your data manipulation
>
> Regards
>
> Duncan Mackay
> Department of Agronomy and Soil Science
> University of New
>
>
> At 04:57 17/05/2009, you wrote:
>>
>> Hello!
>> I promise I looked into help files before asking. Still cannot figure
>> it out. I think it's because I am totally confused what packages use
>> lettice, which use trellis, etc.
>> Sections 1 and 2 below produce the data and the data to plot. My
>> question is about barplot in Section 3. I am trying to:
>> 1. add only horizontal gridlines and manipulate the type and color of
>> that line. tck = 1 is not flexible enough to do it.
>> 2. make the legend come on top of gridlines and not under them
>> 3. add plotted Y values above the bars
>>
>> Thank you very much for any pointers!
>> Dimitri
>>
>> ### Section 1: generates my data set "data":
>>
>> N<-100
>> myset1<-c(1,2,3,4,5)
>> probs1<-c(.05,.10,.15,.40,.30)
>>
>> group<-unlist(lapply(1:4,function(x){
>>        out<-rep(x,25)
>>        return(out)
>> }))
>> set.seed(1)
>> a<-sample(myset1, N, replace = TRUE,probs1)
>> a[which(rbinom(100,2,.01)==1)]<-NA
>> set.seed(12)
>> b<-sample(myset1, N, replace = TRUE,probs1)
>> b[which(rbinom(100,2,.01)==1)]<-NA
>> set.seed(123)
>> data<-data.frame(group,a=a,b=b)
>> data["group"]<-lapply(data["group"],function(x) {
>>        x[x %in% 1]<-"Group 1"
>>        x[x %in% 2]<-"Group 2"
>>        x[x %in% 3]<-"Group 3"
>>        x[x %in% 4]<-"Group 4"
>>        return(x)
>> })
>> data$group<-as.factor(data$group)
>> lapply(data,table,exclude=NULL)
>>
>> ### Section 2. Creating data to plot:
>> table.a<-with(data,table(group,a))
>> table.a.percents<-apply(table.a,2,function(x){
>>        out<-round(x*100/sum(x),1)
>>        return(out)
>> })
>>
>> ### Section 3. Creating a plot:
>> barplot(table.a.percents,xlab = "Values", ylab =
>> "Percentages",ylim=c(0,100),axis.lty=1,legend=T,beside=T,tck = 1)
>>
>> --
>> Dimitri Liakhovitski
>> MarketTools, Inc.
>> Dimitri.Liakhovitski at markettools.com
>>
>> ______________________________________________
>> 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.
>
>



-- 
Dimitri Liakhovitski
MarketTools, Inc.
Dimitri.Liakhovitski at markettools.com




More information about the R-help mailing list