Барплот, представляющий процент отдельных групп - PullRequest
0 голосов
/ 25 марта 2020

Пример данных выглядит следующим образом:

data = data.frame(group1 = c(1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1),
                  group2 = c(3, 3, 1, 3, 2, 1, 1, 2, 2, 3, 3))

Я хочу создать столбчатую диаграмму с группами 1, 2, 3 на оси x и столбцами для представления пропорций в группе.

Например,

ggplot(data, aes(x = group2, fill = group1))+
geom_bar(position = "dodge") 

Имеет столбики рядом друг с другом, как я хочу, но только представляет счет, тогда как

ggplot(data, aes(x = group2, fill = group1))+
geom_bar(position = "fill") 

дает пропорции, но они складываются - как объединить два, чтобы получить пропорции, но отображать их рядом друг с другом?

Заранее спасибо

1 Ответ

0 голосов
/ 25 марта 2020

Мы можем получить процент, сгруппированный по 'group2', а затем построить график

library(dplyr)
library(ggplot2)
data %>% 
    group_by(group2) %>% 
    summarise(group1 = mean(group1)) %>%
    ggplot(aes(x = group2, y = group1)) +
        geom_bar(position = "dodge", stat = 'identity') +
        ylab('percentage')

-выход

enter image description here


Или другой вариант, если это относительный процент

ggplot(data, aes(x = group2)) + 
         geom_bar(aes(y = (..count..)/sum(..count..)))+
         ylab('percentage')

-выход

enter image description here

...