Remi.b
Remi.b

Reputation: 18219

Display frequency instead of count with geom_bar() in ggplot

On this page, they give the following example

library(ggplot2)
library(reshape2)
ggplot(data=tips, aes(x=day)) + geom_bar(stat="bin")

Instead of a count I'd like to have a frequency in y-axis. How can I achieve this?

Upvotes: 43

Views: 99344

Answers (3)

scottkosty
scottkosty

Reputation: 2570

With ggplot2 >= 3.4.0, I think the recommended way is the following:

library("ggplot2")
library("reshape2")

ggplot(data = tips, aes(x = day)) + 
  geom_bar(aes(y = after_stat(prop), group = 1))

Upvotes: 4

Dambo
Dambo

Reputation: 3486

now ..prop.. is available

ggplot(data=tips, aes(x=day)) + 
  geom_bar(aes(y = ..prop.., group = 1))

Upvotes: 23

tonytonov
tonytonov

Reputation: 25608

Here's the solution which can be found in related question:

pp <- ggplot(data=tips, aes(x=day)) + 
      geom_bar(aes(y = (..count..)/sum(..count..)))

If you would like to label frequencies as percentage, add this (see here):

library(scales)
pp + scale_y_continuous(labels = percent)

Upvotes: 57

Related Questions