[R] Barplot - Can't figure it out

Achim Zeileis Achim.Zeileis at wu-wien.ac.at
Fri Feb 18 13:36:12 CET 2005


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
>




More information about the R-help mailing list