#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, класс = «данные.кадр»)