由于某种原因,我似乎无法使用stat_count
向ggplot添加正确的比例标签。即使我使用的是..prop..
,下面的代码也会返回显示所有类别100%的标签。我是否应该使用其他东西代替stat_count
?
library(tidyverse)
diamonds %>%
ggplot(aes(color, fill=cut)) +
geom_bar(position = 'fill') +
stat_count(aes(label= scales::percent(..prop..)),
geom = 'text', position = position_fill(vjust = 0.5))
我知道这也可以通过在将数据提供给ggplot
之前计算百分比来实现(如下所示),但是我有很多代码正在使用geom_bar
,因此我需要进行更改如果我这样做的话,所有的一切。
diamonds %>%
count(color, cut) %>%
group_by(color) %>%
mutate(pct=n/sum(n)) %>%
ggplot(aes(color, pct, fill=cut)) +
geom_col(position = 'fill') +
geom_text(aes(label=scales::percent(pct)), position = position_fill(vjust=0.5))
答案 0 :(得分:4)
如果您不想更改geom_label()
部分,则可以在geom_bar
中进行计算:
diamonds %>%
ggplot(aes(color, fill=cut)) +
geom_bar(position = 'fill') +
geom_text(data = . %>%
group_by(color, cut) %>%
tally() %>%
mutate(p = n / sum(n)) %>%
ungroup(),
aes(y = p, label = scales::percent(p)),
position = position_stack(vjust = 0.5),
show.legend = FALSE)