r - R ggplot geom_bar 按组计数值的数量
问题描述
我没有分面就尝试了这段代码,它可以工作。
我想在每个条上添加计数并在我的情节中使用方面,它坏了。我设法使它接近我想要的,像这样:
mtcars %>% group_by(gear, am, vs) %>% summarize(hp_sum = sum(hp), hp = hp) %>%
ggplot(aes(gear, hp_sum, fill = factor(am))) + facet_grid(.~vs) +
geom_bar(stat = 'identity', position = 'dodge', alpha = 0.5, size = 0.25) +
geom_text(aes(label=..count.., y = ..count..), stat='count', position = position_dodge(width = 0.95), size=4)
但我想要每个栏顶部的数字。如果我使用y = hp_sum
,我得到错误:
Error: stat_count() can only have an x or y aesthetic.
Run `rlang::last_error()` to see where the error occurred.
我可能以错误的方式格式化数据集。有任何想法吗?谢谢!
解决方案
我从这篇文章中了解到,geom_text
不按组进行计数。
一个解决方案是事先做总结:
mtcars %>% group_by(gear, am, vs) %>%
summarize(hp_sum = sum(hp), count = length(hp)) %>%
ggplot(aes(gear, hp_sum, fill = factor(am))) + facet_grid(.~vs) +
geom_bar(stat = 'identity', position = 'dodge', alpha = 0.5, size = 0.25) +
geom_text(aes(gear, hp_sum, label = count),
position = position_dodge(width = 0.95), size=4)
确保在图中以相同的方式对数据进行分组。以下是分组x=gear, facet_grid(.~vs), fill = factor(am)
的三个因素。y=hp
所以你应该这样分组:group_by(gear, am, vs)
. 希望这可以帮助任何正在努力解决这个问题的人。
推荐阅读
- php - 使用“upload_dir”选项时,Symfony 4“Easy admin”上传目录不会改变
- android - 在splashScreen react-native android中更改状态栏的颜色
- laravel - 使用 Eloquent join 会导致不正确的 id 结果
- c# - 如何知道在 ASP.net 核心中使用了哪些函数以及我可以使用哪些函数(逆向工程)
- entity-framework-core - 在 QueryFilter 中使用客户端函数
- reactjs - 在 ReactJS 中将父级的通用对象字段与子级绑定
- kubernetes - 在 Kubernetes 上使用 Istio 时,如何确保 TCP 流量由 Envoy sidecar 代理?
- powerbi - 条形图中的 Power BI 分类数据计数
- r - 使用带有 emmeans 的抽象公式
- go - GoLang Slice 默认上下界混淆