Существует ли функция R для нормализации высоты на круговой диаграмме?

#r #ggplot2 #pie-chart #normalize

Вопрос:

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

Я хотел, чтобы piechart был разделен на одну категорию и группу по другой.

 df %gt;%   count(category,group) %gt;%   ggplot(aes(x="", y=n, fill=factor(group)))    geom_bar(stat="identity", width=1)    coord_polar("y", start=0)    facet_wrap(~category)   

Я сделал следующее, чтобы нормализовать их рост.

 Piechartdf lt;- df %gt;%   count(category,group)   Piechart lt;- Piechart %gt;%  mutate(proportion = case_when(  Type=="category1" ~ n/sum(Piechart[which(Piechart$Type == "category1"), 3]),  Type=="category2" ~ n/sum(Piechart[which(Piechart$Type == "category2"), 3])  ))  

Тогда в первом случае я просто выбираю n для пропорции, есть ли более простой способ достичь этого?

Комментарии:

1. Можете ли вы предоставить примеры данных, опубликовав выходные dput(df) данные ?

2. Ваш подход хорош — для расчета и построения пропорций, а не подсчетов, но ваш dplyr код неуклюж. Если вы поделитесь некоторыми данными, как предлагает r2evans, мы сможем вам помочь.

3. структура(список(X = 36:51, категория = c(«категория2», «категория2», «категория2», «категория2», «категория2», «категория2», «категория2», «категория2», «категория2», «категория1», «категория1», «категория1», «категория1», «категория1», «категория1», «категория1», «категория1»), группа = c(30 Л, 40 Л, 30 Л, 30 Л, 30 Л, 30 Л, 20 Л, 30 Л, 30 Л, 40 Л, 30 Л, 30 Л, 50 Л, 30 Л, 60 Л, 40 Л)), строка.имена = 36:51, класс = «данные.кадр»)

Ответ №1:

Вы можете попробовать

 df %gt;%   count(category,group) %gt;%  group_by(category) %gt;%  mutate(n = n/sum(n)) %gt;%  ggplot(aes(x="", y=n, fill=factor(group), group = category))    geom_bar(stat="identity", width=1)   coord_polar("y", start=0)    facet_wrap(~category)   

введите описание изображения здесь