[R] Barplot w/ single stacked bar
Marc Schwartz
marc_schwartz at comcast.net
Thu Jan 24 17:32:25 CET 2008
Muenchen, Robert A (Bob) wrote:
> Hi All,
>
> I can get the barplot function to do many types of plots, stacked or
> otherwise. However, I cannot get it to do a *single* stacked bar. I've
> searched several books & listserv archives to no avail. I suspect I'm
> missing the obvious from the help file!
>
> I can reach my goal in ggplot2, although the relative heights of the
> bar's pieces don't seem quite right (it does generate a warning):
>
> library(ggplot2)
> x<-factor(1)
> y<-factor( c("Male","Male","Female") )
> mydata <- data.frame(x,y)
> rm(x,y)
> mydata
>
> #These are close to my goal:
> qplot( x, y, fill=y, geom="bar", data=mydata)
>
> # or
> ggplot(mydata, aes(x=x, y=y, fill=y)) + geom_bar()
>
> # But this places the bars beside each other rather than stack them.
> barplot( table(mydata$y), beside=FALSE)
>
> Thanks!
> Bob
Bob,
Try this:
barplot(as.matrix(table(mydata$y)), beside = FALSE)
Conceptually, for a stacked bar, each bar is a column in a matrix. The
components in a stacked bar are the row values in the column.
Thus, you need to create a single column matrix from your table.
One might question the value of such a plot however, if the intent is to
provide a visual representation of the difference in counts/proportions
between two groups. A side-by-side barplot or a dotchart would seem to
be better here.
HTH,
Marc Schwartz
More information about the R-help
mailing list