[R] Using ggplot2 to plot percentages in bar chart.

Shawn Way SWay at meco.com
Mon Dec 5 23:56:49 CET 2016


That’s precisely what I’m trying to accomplish.

Shawn Way, PE

From: John Kane [mailto:jrkrideau at yahoo.ca]
Sent: Monday, December 05, 2016 4:47 PM
To: Shawn Way <SWay at meco.com>; r-help at r-project.org
Subject: Re: [R] Using ggplot2 to plot percentages in bar chart.

I've never seen   stat_bin used like that. What exactly is it supposed to do. It looks like you are trying to label the %ages in each piece of the bar.

On Monday, December 5, 2016 2:17 PM, Shawn Way <SWay at meco.com<mailto:SWay at meco.com>> wrote:

I have the following data in which I'm trying to summarize in a stacked bar plot showing the percentages as a label in the bar.

The data is as follows:

> head(data)
  MASTERPAK2LT MASTERPAK4LT MASTERPAK7LT MASTERPAK10LT MASTERPAK22LT
1            X            X            X            X            X
2            C            C            C            X            X
3            C            C            C            X            X
4            U            U            X            X            X
5        <NA>            U            X            X            X
6        <NA>        <NA>            X          <NA>          <NA>

It is then transformed using dplyer:

> d2 <- data %>%
    gather(Model,Status) %>%
    group_by(Model,Status) %>%
    summarise(count=n()) %>%
    mutate(perc=count/sum(count))

giving
> head (d2)
Source: local data frame [6 x 4]
Groups: Model [2]

          Model Status count      perc
          <chr>  <chr> <int>      <dbl>
1 MASTERPAK10LT      C    8 0.21052632
2 MASTERPAK10LT      X    29 0.76315789
3 MASTERPAK10LT  <NA>    1 0.02631579
4 MASTERPAK22LT      C    6 0.15789474
5 MASTERPAK22LT      U    1 0.02631579
6 MASTERPAK22LT      X    30 0.78947368

I then try to plot this using ggplot using

plt <- ggplot(d2,aes(x=Model,y= perc,fill=Status)) +
    geom_bar(stat="identity") +
    labs(y="Percent Complete") +
    stat_bin(geom = "text",
            aes(label=paste(round(perc*100),"%")),
            vjust=5) +
    scale_y_continuous(labels = percent)

but I get the error:

Error: stat_bin() must not be used with a y aesthetic.

When I leave out the stat_bin, I get the correct bar chart, but without the labels.  Can someone please help me understand what is causing the error above?


Thank you kindly,

Shawn Way, PE

______________________________________________
R-help at r-project.org<mailto: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<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