Gavin, thank you for using likert()
There are several problems in the use of a data.frame. 1. df is a bad name to use because df is the name of a base function (that isn't an error, it is bad style). 2. the as.character() made the line you sent not work. 3. you indeed have the variable cat as a factor. you need to make it the row.names of the data.frame. mydata <- data.frame( row.names=c("group1", "group2", "group3", "group4", "group5"), males=c(20,30,45,12,5), females=c(35,23,32,8,5)) ## make a pyramid Likert chart as.pyramidLikert(likert(mydata), panel.width=.46) Rich On Tue, May 22, 2012 at 7:29 AM, Gavin Rudge <g.ru...@bham.ac.uk> wrote: > I'm creating a stacked bar chart using the likert command in the HH > package. My data are in a data frame, with two numeric variables and a > categorical variable, I can't get likert to use the column containing the > categorical variable as a my y axis label. > > Here is a quick example: > > library(HH) > #my data are: > df<-data.frame(as.character(cat=c("group1","group2","group3","group4", > "group5")),males=c(20,30,45,12,5),females=c(35,23,32,8,5)) > #make a pyramid Likert chart > p<-likert(df) > as.pyramidLikert(p) > > It tries to plot three variables here when I just want two. I think I > understand what is happening - my categorical variable is treated as a > factor and I think it gets inserted as an integer into the matrix which the > command derives from my data fame, to make the plot with(?) It's then used > as a variable to be plotted just like the other two variables. what I don't > get is how the example given in the package does something differently, > which is how I want mine to work. > > ## Population Pyramid > data(USAge.table) > USA79 <- USAge.table[75:1, 2:1, "1979"]/1000000 > PL <- likert(USA79, > main="Population of United States 1979 (ages 0-74)", > xlab="Count in Millions", > ylab="Age", > scales=list( > y=list( > limits=c(0,77), > at=seq(1,76,5), > labels=seq(0,75,5), > tck=.5)) > ) > PL > as.pyramidLikert(PL) > > This does exactly what I'm trying to achieve. here the two population > counts are plotted in the likert plot and the age groups in the first > columns are used as labels. > > I can't work out why in my example the age group variable is not used in > the same way as the in my plot in the same way as the agegroups in this > example, other than the example takes it's data from a table and mine is > coming from a data frame. The end point I want is a stacked Likert bar > chart based on a data frame where the column containing the description of > my groups is used as the y axis labels and the other two columns are used > to draw the bars. I'm sure I'm missing a simple solution. any help > gratefully received. > > Gavin. > > [[alternative HTML version deleted]] > > ______________________________________________ > 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<http://www.r-project.org/posting-guide.html> > and provide commented, minimal, self-contained, reproducible code. > [[alternative HTML version deleted]] ______________________________________________ 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.