我想在一个图表上绘制多个类别,每个类别的百分比总和为100%。(男性或女性),加起来会达到100%。我使用下面的代码,其中的百分比似乎是两个图表上的所有组,即如果你把左边和右边图表上的所有条加起来,它们将总计为100%,而不是左手图形上的黄色条总计为100%,左手图形上的紫色条总计为100%等。
我很欣赏这是可以通过使用stat = 'identity'来实现的,但是有没有一种方法可以在ggplot中做到这一点,而不必在绘图之前争论框架?
library(ggplot2)
tmp <- diamonds %>% filter(color %in% c("E","I")) %>% select(color, cut, clarity)
ggplot(data=tmp,
aes(x=clarity,
fill=cut)) +
geom_bar(aes(y = (..count..)/sum(..count..)), position="dodge") +
scale_y_continuous(labels = scales::percent) + facet_wrap(vars(color))
字符串
的数据
1条答案
按热度按时间ehxuflar1#
在计算ggplot2中的百分比时,您必须像在将数据传递给ggplot之前汇总数据一样对数据进行分组。在您的情况下,ggplot2内部添加到数据中的
PANEL
列可以用于分组:使用
after_stat()
和ave()
来计算按组的计数之和,这可以像这样实现:字符串
的数据
编辑如果你需要按多个变量分组,我建议使用一个辅助函数,在这里我使用
dplyr
进行计算:型
的