[R] Labeling Stacked Bar Plots Representing Percentages with Count Data

Rui Barradas ru|pb@rr@d@@ @end|ng |rom @@po@pt
Mon Nov 18 08:21:41 CET 2019


Hello,

It's dificult to tell without data. Can you post the output of

dput(head(tagSummary, 20))  # or 30

?
(If it's private data, something mimicking its structure.)

Rui Barradas

Às 02:06 de 18/11/19, Josh B escreveu:
> Hello Rui,
> 
> I worked through your suggestion and appear to be getting an error?  Not 
> quite sure what the error is?  Maybe a conflict of two packages I have 
> loaded (dplyr and plyr)? Anyhow, I used code you suggested and received 
> an error in return:
> 
> sumplot<-tagSummary %>%
>    group_by(recvDeployName, speciesSci) %>%
>    summarize(count = n()) %>%
>    ggplot(aes(factor(recvDeployName), y = count, fill = 
> factor(speciesSci))) +
>    geom_bar(position = "fill", stat = "identity") +
>    geom_text(aes(label = count),
>              position = position_fill(vjust=0.5)) +
>    theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
>    scale_y_discrete(labels = scales::percent_format())
> 
> Error: n() should only be called in a data context Call 
> `rlang::last_error()` to see a backtrace.> rlang::last_error() 
> <error/rlang_error>n() should only be called in a data context 
> Backtrace:1. dplyr::group_by(., recvDeployName, speciesSci) 8. 
> plyr::summarize(., count = n()) 9. [ base::eval(...) ]with 1 more 
> call11. dplyr::n() 12. dplyr:::from_context("..group_size") 13. 
> `%||%`(...) Call `rlang::last_trace()` to see the full backtrace.
> 
> **//___^
> *I did try this on my own and it seems promising... *
> sumplot<-ggplot(tagSummary,aes(x=recvDeployName,y=nDet,fill=speciesSci))+
>    geom_text(aes(label=nDet),position="fill", stat="identity")+
>    theme(axis.text.x=element_text(angle=90,hjust=1))+
>    scale_y_continuous(labels=scales::percent_format())
> 
> The code I tried on my own above gives me stacked data labels 
> representing the number of times a species was detected.  The stacked 
> data labels also match the previous stacked barplot I made without the 
> labels too, which is also promising.  However, the code above does not 
> make the stack bar graph show the percentages?  Again, I want the color 
> bars depicting the percentage while the count data is labeled within 
> each representative stack.
> 
> 
> 
> Rplot02.jpeg
> 
> 
> This was the graph I had before trying to add data labels... I want the 
> data labels above to be represented within the graph below.  Thank you 
> for your time and help.
> Rplot03.jpeg
> 
> On Sat, Nov 16, 2019 at 11:17 AM Rui Barradas <ruipbarradas using sapo.pt 
> <mailto:ruipbarradas using sapo.pt>> wrote:
> 
>     Hello,
> 
>     In geom_text change to position = position_fill(vjust=0.5).
>     What's important is to have position = "fill" in geom_bar match
>     geom_text.
>     Something like :
> 
> 
>     library(dplyr)
>     library(ggplot2)
> 
>     data(mtcars)
> 
>     mtcars %>%
>         group_by(cyl, gear) %>%
>         summarise(count = n()) %>%
>         ggplot(aes(factor(cyl), y = count, fill = factor(gear))) +
>         geom_bar(position = "fill", stat = "identity") +
>         geom_text(aes(label = count),
>                   position = position_fill(vjust=0.5)) +
>         theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
>         scale_y_discrete(labels = scales::percent_format())
> 
> 
>     Hope this helps,
> 
>     Rui Barradas
> 
>     Às 23:56 de 15/11/19, Josh B escreveu:
>      > Hello,
>      >
>      > I am trying to include the count labels on stacked bar plots which
>      > represent percentages. I want to show x-amount of individuals
>     make up the
>      > graphed percentages. However, when I include the count labels my
>     y-axis
>      > gets blown out of proportion because it changes to match the
>     count data,
>      > not the percentages. Also, the bars are removed from the graph
>     too? I have
>      > reviewed other posts similar to this, such as: "How to add
>     percentage or
>      > count labels above percentage bar plot?". I cannot find the error
>     in my r
>      > command.
>      >
>      > My command used is as follows:
>      >
>      >
>     sumplot<-ggplot(tagSummary,aes(x=recvDeployName,y=nDet,fill=speciesSci))+
>      >    geom_bar(position="fill",stat="identity")+
>      >    geom_text(aes(label=nDet),position=position_stack(vjust=0.5))+
>      >    theme(axis.text.x=element_text(angle=90,hjust=1))+
>      >    scale_y_continous(labels=scales::percent_format())
>      >
>      > Example of data being graphed:
>      >
>      > speciesSci         recvDeployName    nDet
>      > 1 Arenaria interpres Bucktoe Preserve    96
>      > 2 Arenaria interpres CHDE               132
>      > 3 Arenaria interpres Fortescue        22133
>      > 4 Arenaria interpres Mispillion        2031
>      > 5 Arenaria interpres Norbury           3709
>      > 6 Arenaria interpres Penn - DRL          49
>      >
>      > What my graph looks like when I use the command example provided
>     above:
>      > graph <https://i.stack.imgur.com/TLLGh.png>
>      >
>      > Any help would be greatly appreciated. Thank you.
>      >
>      > *Joshua N. Barth*
>      >
>      >       [[alternative HTML version deleted]]
>      >
>      > ______________________________________________
>      > R-help using r-project.org <mailto: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