[R] Different stack barplots - same color legends

Richard M. Heiberger rmh @end|ng |rom temp|e@edu
Wed Oct 31 16:24:06 CET 2018


part is fine.  just be sure that the small part causes the problem.
I will need that to investigate what is happening.


On Wed, Oct 31, 2018 at 11:15 AM, P. Roberto Bakker
<robertobakker using gmail.com> wrote:
> It is a very long result text. I can send it to you, or is part of it ok?[
>
> Op wo 31 okt. 2018 om 14:27 schreef Richard M. Heiberger <rmh using temple.edu>:
>>
>> 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.




More information about the R-help mailing list