[R] Different stack barplots - same color legends

Richard M. Heiberger rmh @end|ng |rom temp|e@edu
Wed Oct 31 14:27:26 CET 2018


Please send me the
dput(teamq)


On Wed, Oct 31, 2018 at 03:51 P. Roberto Bakker <robertobakker using gmail.com>
wrote:

> Thank you for you information. Package 'HH' is interesting.
>
> Now I find another problem when using 'likert(teamq)'
> I get an error message:
> > likert(teamq)
> Error in dimnames(x) <- `*vtmp*` :
>   length of 'dimnames' [2] not equal to array extent
>
> I checked:
> > dim(teamq)
> [1] 4 2
> > ncol(teamq)
> [1] 2
> So it should be good.
>
> I used 'make.names' , in case the spaces in the variable names would be a
> problem.
> Same error.
>
> What could I do?
>
> Best and thank you in advance.
> Roberto
>
>
> Op ma 22 okt. 2018 om 20:10 schreef Richard M. Heiberger <rmh using temple.edu>:
>
>> Try the likert function in
>> install.packages("HH) ## if necessary
>> library(HH)
>>
>> Then using David Carlson's example teamq
>> likert(teamq)
>>
>> Your example in the 1:30PM (Eastern Daylight Time) doesn't work.
>> Error in revalue(teamq, c(`de situatie in zeer geringe mate van
>> toepassing is\nvoor u of uw supervisorengroep` = "1",  :
>>   x is not a factor or a character vector.
>>
>> There are many examples in
>> ?likert
>>
>> Rich
>>
>>
>> On Mon, Oct 22, 2018 at 1:30 PM, P. Roberto Bakker
>> <robertobakker using gmail.com> wrote:
>> > Dear David,
>> >
>> > Thank you for you quite response.
>> > My apologies for not giving some sample data - this is due to AVG.
>> > *But this minisample should not be a problem (all in Dutch)*:
>> >  teamq
>> > # A tibble: 4 x 2
>> >   `Ik volg bijscholing om mijn opleiders-kwaliteiten op peil te houden`
>> >
>> >   <chr>
>> >
>> > 1 de situatie in hoge mate van toepassing is voor u of uw
>> > supervisorengroep
>> > 2 de situatie in zeer hoge mate van toepassing is voor u of uw
>> > supervisorengroep
>> > 3 de situatie in zeer hoge mate van toepassing is voor u of uw
>> > supervisorengroep
>> > 4 de situatie in geringe mate van toepassing is voor u of uw
>> > supervisorengroep
>> >   `Ik weet precies wat de ‘modernisering van de opleiding’ inhoudt`
>> >
>> >   <chr>
>> >
>> > 1 de situatie in hoge mate van toepassing is voor u of uw
>> > supervisorengroep
>> > 2 de situatie in zeer hoge mate van toepassing is voor u of uw
>> > supervisorengroep
>> > 3 de situatie in zeer hoge mate van toepassing is voor u of uw
>> > supervisorengroep
>> > 4 de situatie in geringe mate van toepassing is voor u of uw
>> > supervisorengroep
>> >
>> > As you see the likert items are in words, and I should change them in
>> > nummeric - Am I correct?
>> >
>> > *To do this, I tried (see further below):*
>> > plyr rename() ; I receive the message it should be a factor or character
>> > dplyr recode() ; same message
>> > mapvalues() ; it should be atomic, so I used as.atomic(teamq) but then I
>> > receive the nummers a strings.
>> >
>> > *The syntaxes*
>> > require(plyr)
>> > example2 <- revalue(teamq,
>> >                     c("de situatie in zeer geringe mate van toepassing
>> is
>> > voor u of uw supervisorengroep"= "1",
>> >                         "de situatie in geringe mate van toepassing is
>> voor
>> > u of uw supervisorengroep"= "2",
>> >                         "de situatie enigszins van toepassing is voor u
>> of
>> > uw supervisorengroep"= "3",
>> >                         "de situatie in hoge mate van toepassing is
>> voor u
>> > of uw supervisorengroep"= "4",
>> >                         "de situatie in zeer hoge mate van toepassing is
>> > voor u of uw supervisorengroep"= "5"))
>> >
>> > require(dplyr)
>> > example2 <- recode(teamq,
>> >                     c("de situatie in zeer geringe mate van toepassing
>> is
>> > voor u of uw supervisorengroep"= "1",
>> >                       "de situatie in geringe mate van toepassing is
>> voor u
>> > of uw supervisorengroep"= "2",
>> >                       "de situatie enigszins van toepassing is voor u
>> of uw
>> > supervisorengroep"= "3",
>> >                       "de situatie in hoge mate van toepassing is voor
>> u of
>> > uw supervisorengroep"= "4",
>> >                       "de situatie in zeer hoge mate van toepassing is
>> voor
>> > u of uw supervisorengroep"= "5"))
>> >
>> > mapvalues(as.matrix(teamq), from = c("de situatie in zeer geringe mate
>> van
>> > toepassing is voor u of uw supervisorengroep",
>> >                         "de situatie in geringe mate van toepassing is
>> voor
>> > u of uw supervisorengroep",
>> >                         "de situatie enigszins van toepassing is voor u
>> of
>> > uw supervisorengroep",
>> >                         "de situatie in hoge mate van toepassing is
>> voor u
>> > of uw supervisorengroep",
>> >                         "de situatie in zeer hoge mate van toepassing is
>> > voor u of uw supervisorengroep"),
>> >           to = c(1,2,3,4,5))
>> >
>> > What should I do?
>> > Thank you in advance, Roberto
>> >
>> > Op ma 22 okt. 2018 om 17:13 schreef David L Carlson <dcarlson using tamu.edu
>> >:
>> >
>> >> Your example is not reproducible since you did not give us some sample
>> >> data. I suspect that your data frame consists of columns that represent
>> >> questions and rows that represent individuals who answered the
>> questions.
>> >> First create a simple example:
>> >>
>> >> set.seed(42)
>> >> teamq <- data.frame(V1=sample(c(1, 2, 4, 5), 25, replace = TRUE),
>> >>      V2=sample(c(1, 2, 3, 4, 5), 25, replace=TRUE),
>> >>      V3=sample(c(2, 3, 4, 5), 25, replace=TRUE))
>> >>
>> >> Notice that this data frame ONLY contains questions (and only 3
>> >> questions). Here are 2 ways to get what you want. The first one stacks
>> the
>> >> data:
>> >>
>> >> teamq.stack <- stack(teamq)
>> >> str(teamq.stack)
>> >> counts <- table(teamq.stack)
>> >> str(counts)
>> >>
>> >> The second one converts each column to a factor with levels 1 - 5:
>> >>
>> >> teamq2 <- data.frame(lapply(teamq, factor, levels=1:5))
>> >> str(teamq2)
>> >> counts <- sapply(teamq2, table)
>> >> str(counts)
>> >>
>> >> Now make the plots:
>> >>
>> >> cols <- c("yellow","sandybrown","orange", "darkolivegreen","green")
>> >> barplot(counts[, 1], horiz=TRUE, col=cols, legend=TRUE)
>> >> barplot(counts[, 2], horiz=TRUE, col=cols, legend=TRUE)
>> >> barplot(counts[, 3], horiz=TRUE, col=cols, legend=TRUE)
>> >>
>> >> You will need to adjust the xlim= argument so that the legend does not
>> >> print on top of the bars.
>> >>
>> >> ----------------------------------------
>> >> David L Carlson
>> >> Department of Anthropology
>> >> Texas A&M University
>> >> College Station, TX 77843-4352
>> >>
>> >>
>> >> -----Original Message-----
>> >> From: R-help <r-help-bounces using r-project.org> On Behalf Of P. Roberto
>> Bakker
>> >> Sent: Monday, October 22, 2018 9:04 AM
>> >> To: R mailing list <r-help using r-project.org>
>> >> Subject: [R] Different stack barplots - same color legends
>> >>
>> >> Hi,
>> >>
>> >> I want to make barplots from different questions (columns) in one
>> >> data.frame.
>> >> Each question has the same 5 likert items.
>> >> Now the problem: in some questions all items are answered; in other
>> less.
>> >> From the syntax below I get nice stack barplots - *but the legend
>> colors do
>> >> not* refer to the same likert-item, which I understand - the colors go
>> in
>> >> sequence along the table.
>> >> Question: how can I write a syntax that each likert-item has the same
>> >> legend color?
>> >> Thank you in advance,
>> >>
>> >> Roberto
>> >>
>> >> SYNTAX:
>> >> counts19 <- table(teamq[,19])
>> >> counts20 <- table(teamq[,20])
>> >> barplot(as.matrix(counts19), horiz = T,
>> >>         col=c("yellow","sandybrown","orange",
>> "darkolivegreen","green"),
>> >> legend=T)
>> >> barplot(as.matrix(counts20), horiz = T,
>> >>         col=c("yellow","sandybrown","orange",
>> "darkolivegreen","green"),
>> >> legend=T)
>> >>
>> >>         [[alternative HTML version deleted]]
>> >>
>> >> ______________________________________________
>> >> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> >> 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.
>> >>
>> >
>> >         [[alternative HTML version deleted]]
>> >
>> > ______________________________________________
>> > R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> > 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.
>>
>

	[[alternative HTML version deleted]]




More information about the R-help mailing list