Показывает процент от общего числа в верхней части geom_bar в ggplot2, показывая количество по оси y - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь создать гистограмму с помощью ggplot2, показывающую счетчики по оси y, а также проценты от общего числа в верхней части каждого столбца.Я подсчитал общее количество и проценты, но не могу понять, как добавить общее количество процентов в верхней части столбцов.Я пытаюсь использовать geom_text, но не могу заставить его работать.

Минимальный пример:

iris %>% 
  group_by(Species) %>% 
  summarize(count = n()) %>% 
  mutate(percent = count/sum(count)) %>% 
  ggplot(aes(x=Species, y=count)) +
    geom_bar(stat="identity") + 
    geom_text(aes(label = scales::percent(..prop..), y=..count..), stat= "count", vjust = -.5)

Я смотрел на другие ответы, такие как Как добавить процент илисчитать метки над графиком в процентах? , но в этих примерах и ось y, и метки показывают проценты.Я пытаюсь отобразить счетчики на оси Y и проценты в метках.

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Просто используйте percent в качестве метки.

iris %>% 
  group_by(Species) %>% 
  summarize(count = n()) %>% 
  mutate(percent = count/sum(count)) %>% 
  ggplot(aes(x=Species, y=count)) +
  geom_col() +
  geom_text(aes(label = paste0(round(100 * percent, 1), "%")), vjust = -0.25)

enter image description here

0 голосов
/ 25 мая 2018
library(dplyr)
library(ggplot2)
df1 = iris %>% 
    group_by(Species) %>% 
    summarize(count = n()) %>% 
    mutate(percent = count/sum(count))
ggplot(data = df1, aes(x = Species, y = count, label = paste0(round(percent,2),"%"))) +
    geom_bar(stat="identity") +
    geom_text(aes(y = count*1.1))
...