[R] Barplot - Can't figure it out

Adaikalavan Ramasamy ramasamy at cancer.org.uk
Fri Feb 18 17:41:00 CET 2005


Here is a generalisation of the function that others have suggested to
take take more than 2 vectors.

my.barplot <- function(...){

  my.list <- list(...)
  lev <- sort( unique( unlist(my.list) ) )
  tmp <- t(sapply( my.list, function(v) table(factor(v, levels=lev))) )
  barplot(tmp, beside=T)

}

w <- c(3, 3, 3, 4, 3, 4, 3, 4, 3, 4)
x <- c(5, 2, 5, 5, 2, 2, 5, 5, 4, 2)
y <- c(1, 2, 3, 0, 5, 0, 1, 2, 1, 2)
z <- sample( c(w,x,y,z), 50, replace=TRUE )

my.barplot( w, x, y, z )


Regards, Adai


On Fri, 2005-02-18 at 14:00 +0100, T Petersen wrote:
> Yeah, that's it. I have to catagorize the data AND tell R how many 
> catagories there are. It works perfectly now and I've learned some 
> more:-D Great.
> 
> 
> 
> Achim Zeileis wrote:
> 
> >On Fri, 18 Feb 2005 13:00:40 +0100 T Petersen wrote:
> >
> >  
> >
> >>Wow, I'm getting confused...The syntax Petr suggested does what I 
> >>wanted, but things are stille wrong...Maybe a bug? Let me explain.
> >>
> >>I got two vectors:
> >>
> >>x = c(3, 3, 3, 4, 3, 4, 3, 4, 3, 4)
> >>
> >>y = c(5, 2, 5, 5, 2, 2, 5, 5, 4, 2)
> >>
> >>then I do the barplot you suggest
> >>
> >>barplot(rbind(table(x), table(y)), beside=T)
> >>
> >>but things are wrong(there is no bar for catagory "3") and I get an
> >>error message: Warning message: 
> >>number of columns of result
> >>        not a multiple of vector length (arg 1) in:
> >>        rbind(table(Quest1), table(Quest2))
> >>
> >>Any ideas?
> >>    
> >>
> >
> >If x and y are categorical variables, you should tell R so (i.e.,
> >convert to a factor) and if both should have the same categories (i.e.,
> >levels) you can supply this information as well:
> >
> >R> x <- factor(x, levels = 2:5)
> >R> y <- factor(y, levels = 2:5)
> >
> >Then, table() knows which categories to use:
> >
> >R> rbind(x = table(x), y = table(y))
> >  2 3 4 5
> >x 0 6 4 0
> >y 4 0 1 5
> >
> >and also the barplot() call given above will do the right thing.
> >Z
> >
> >  
> >
> >>Petr Pikal wrote:
> >>
> >>    
> >>
> >>>Hi
> >>>
> >>>If I understand correctly
> >>>
> >>>barplot(rbind(table(x), table(y)), beside=T)
> >>>
> >>>does what you want.
> >>>
> >>>Cheers
> >>>Petr
> >>>
> >>>
> >>>
> >>>On 18 Feb 2005 at 7:51, T Petersen wrote:
> >>>
> >>> 
> >>>
> >>>      
> >>>
> >>>>Almost. Catagories aren't stacked - I would like to see that x has 2
> >>>>instances of "1" while y has 1 instance of "1". What's more, there
> >>>>        
> >>>>
> >>>are>now TWO distinct barplots - the left one shows x, while the right
> >>>one>shows y. I could live with that, but what I'd ideally want is to
> >>>have>x and y beside each other for EACH catagory - so for catagory
> >>>"1" you>could see taht there are more x's than y's (two x's versus
> >>>one y). But>thanks for the help
> >>>      
> >>>
> >>>>Mulholland, Tom wrote:
> >>>>
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>>>>barplot(matrix(c(x,y),ncol = 2),beside=T)
> >>>>>
> >>>>>Does this help 
> >>>>>
> >>>>>?barplot notes
> >>>>>
> >>>>>height: either a vector or matrix of values describing the bars
> >>>>>          
> >>>>>
> >>>which>>         make up the plot.  If 'height' is a vector, the plot
> >>>      
> >>>
> >>>>>        consists of a sequence of rectangular bars with heights
> >>>>>        given by the values in the vector.  If 'height' is a
> >>>>>          
> >>>>>
> >>>matrix>>         and 'beside' is 'FALSE' then each bar of the plot
> >>>      
> >>>
> >>>>>        corresponds to a column of 'height', with the values in
> >>>>>          
> >>>>>
> >>>the>>         column giving the heights of stacked "sub-bars" making
> >>>up>>         the bar.  If 'height' is a matrix and 'beside' is
> >>>'TRUE',>>         then the values in each column are juxtaposed
> >>>rather than>>         stacked.
> >>>      
> >>>
> >>>>>
> >>>>>
> >>>>>     
> >>>>>
> >>>>>          
> >>>>>
> >>>>>>-----Original Message-----
> >>>>>>From: T Petersen [mailto:Terji78 at yahoo.com]
> >>>>>>Sent: Friday, 18 February 2005 1:35 PM
> >>>>>>To: Kevin Wang
> >>>>>>Cc: r-help at stat.math.ethz.ch
> >>>>>>Subject: Re: [R] Barplot - Can't figure it out
> >>>>>>
> >>>>>>
> >>>>>>Ups, it should of course be barplot() in my mail, not boxplot:-)
> >>>>>>
> >>>>>>Kevin Wang wrote:
> >>>>>>
> >>>>>>  
> >>>>>>
> >>>>>>       
> >>>>>>
> >>>>>>            
> >>>>>>
> >>>>>>>Hi,
> >>>>>>>
> >>>>>>>T Petersen wrote:
> >>>>>>>
> >>>>>>>    
> >>>>>>>
> >>>>>>>         
> >>>>>>>
> >>>>>>>              
> >>>>>>>
> >>>>>>>>Hi,
> >>>>>>>>
> >>>>>>>>I have two catagorical vectors like this;
> >>>>>>>>
> >>>>>>>>x = c(1, 2, 4, 2, 1)
> >>>>>>>>y = c(2, 4, 2 ,4, 1)
> >>>>>>>>
> >>>>>>>>I want to set up a barplot with the catagories 1-4 
> >>>>>>>>      
> >>>>>>>>
> >>>>>>>>           
> >>>>>>>>
> >>>>>>>>                
> >>>>>>>>
> >>>>>>horizontally  and 
> >>>>>>  
> >>>>>>
> >>>>>>       
> >>>>>>
> >>>>>>            
> >>>>>>
> >>>>>>>>number of occurances vertically for each vector x,y. I've tried
> >>>>>>>>
> >>>>>>>>boxplot(table(x,y), beside=T)
> >>>>>>>>
> >>>>>>>>and
> >>>>>>>>
> >>>>>>>>boxplot(c(x,y), beside=T)
> >>>>>>>>      
> >>>>>>>>
> >>>>>>>>           
> >>>>>>>>
> >>>>>>>>                
> >>>>>>>>
> >>>>>>>Have you tried barplot(), instead of boxplot()???
> >>>>>>>
> >>>>>>>Cheers,
> >>>>>>>
> >>>>>>>Kev
> >>>>>>>
> >>>>>>>    
> >>>>>>>
> >>>>>>>         
> >>>>>>>
> >>>>>>>              
> >>>>>>>
> >>>>>>______________________________________________
> >>>>>>R-help at stat.math.ethz.ch mailing list
> >>>>>>https://stat.ethz.ch/mailman/listinfo/r-help
> >>>>>>PLEASE do read the posting guide! 
> >>>>>>http://www.R-project.org/posting-guide.html
> >>>>>>
> >>>>>>  
> >>>>>>
> >>>>>>       
> >>>>>>
> >>>>>>            
> >>>>>>
> >>>>>______________________________________________
> >>>>>R-help at stat.math.ethz.ch mailing list
> >>>>>https://stat.ethz.ch/mailman/listinfo/r-help
> >>>>>PLEASE do read the posting guide!
> >>>>>http://www.R-project.org/posting-guide.html
> >>>>>
> >>>>>
> >>>>>
> >>>>>     
> >>>>>
> >>>>>          
> >>>>>
> >>>>______________________________________________
> >>>>R-help at stat.math.ethz.ch mailing list
> >>>>https://stat.ethz.ch/mailman/listinfo/r-help
> >>>>PLEASE do read the posting guide!
> >>>>http://www.R-project.org/posting-guide.html
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>>Petr Pikal
> >>>petr.pikal at precheza.cz
> >>>
> >>>______________________________________________
> >>>R-help at stat.math.ethz.ch mailing list
> >>>https://stat.ethz.ch/mailman/listinfo/r-help
> >>>PLEASE do read the posting guide!
> >>>http://www.R-project.org/posting-guide.html
> >>>
> >>> 
> >>>
> >>>      
> >>>
> >>______________________________________________
> >>R-help at stat.math.ethz.ch mailing list
> >>https://stat.ethz.ch/mailman/listinfo/r-help
> >>PLEASE do read the posting guide!
> >>http://www.R-project.org/posting-guide.html
> >>
> >>    
> >>
> >
> >______________________________________________
> >R-help at stat.math.ethz.ch mailing list
> >https://stat.ethz.ch/mailman/listinfo/r-help
> >PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
> >
> >  
> >
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>




More information about the R-help mailing list