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 ______________________________________________ R-help@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.