gpt4 book ai didi

r - ggplot2:geom_bar,计算分面百分比

转载 作者:行者123 更新时间:2023-12-02 09:16:42 25 4
gpt4 key购买 nike

我想将 geo_bar 与 facets 一起使用,获取百分比而不是绝对计数,但百分比应该相对于每个 facet,而不是相对于总体计数。

这已经被讨论了很多(example),建议使用geom_bar(aes(y = (..count..)/sum(..count..)))。这不适用于构面(即会给出总数)。已经提出了一个更好的解决方案,使用 stat_count(mapping = aes(x=x_val, y=..prop..)) 代替。

如果 x数字,这似乎有效,但如果 x字符,则无效:所有条都是100%!为什么?难道我做错了什么?谢谢!

library(tidyverse)
df <- data_frame(val_num = c(rep(1, 60), rep(2, 40), rep(1, 30), rep(2, 70)),
val_cat = ifelse(val_num==1, "cat", "mouse"),
group=rep(c("A", "B"), each=100))

#works with numeric
ggplot(df) + stat_count(mapping = aes(x=val_num, y=..prop..)) + facet_grid(group~.)

# does not work?
ggplot(df) + stat_count(mapping = aes(x=val_cat, y=..prop..)) + facet_grid(group~.)

最佳答案

添加 group=group 告诉 ggplot 按 group 计算比例,而不是默认值,默认值将分别用于 val_cat 的每个级别.

ggplot(df) + 
stat_count(aes(x=val_cat, y=..prop.., group=group)) +
facet_grid(group~.)

enter image description here

当 x 变量是连续的时,它看起来像 stat_count 默认情况下计算构面中所有数据的百分比。但是,当 x 变量是分类变量时,stat_count 会分别计算每个 x 水平内的百分比。查看以下示例会发生什么:

添加 val_num 作为组美学会导致在每个 x 级别内计算百分比,而不是在构面中的所有值上计算百分比。

ggplot(df) + 
stat_count(aes(x=val_num, y=..prop.., group=val_num)) +
facet_grid(group~.)

val_num 转换为一个因子同样会导致在每个 x 级别内计算百分比,而不是在一个方面的所有值上计算百分比。

ggplot(df) + 
stat_count(aes(x=factor(val_num), y=..prop..)) +
facet_grid(group~.)

关于r - ggplot2:geom_bar,计算分面百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46595721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com