[R] Different stack barplots - same color legends

P. Roberto Bakker
Wed, 31 Oct 2018 15:15:55 -0000

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 at
temple.edu>:

> Please send me the
> dput(teamq)
>
>
> On Wed, Oct 31, 2018 at 03:51 P. Roberto Bakker <robertobakker at
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 at
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 at 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 at 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 at r-project.org> On
Behalf Of P. Roberto
>>> Bakker
>>> >> Sent: Monday, October 22, 2018 9:04 AM
>>> >> To: R mailing list <r-help at 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 at 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 at 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.
>>>
>>