r - ggplot2:带有geom_bar(位置='填充')的堆叠条形图中的值标签
问题描述
有人可以帮我如何将值标签添加到ggplot中的堆叠条形图吗?有没有一种方法可以计算百分比,geom_bar()
或者我必须手动计算百分比然后使用geom_col()
?
library(tidyverse)
df <- data.frame(var1 = sample(c("A","B"), size = 100, replace=TRUE),
var2 = sample(c("x", "y"), size=100, replace=TRUE))
df %>%
ggplot(aes(x = var1, fill = var2)) +
geom_bar(position = 'fill') +
geom_text(aes(x = var1, fill = var2, label = "x")) <= ???
感谢帮助!
解决方案
虽然stat_count
计算引擎盖下的一些百分比(可以通过..prop..
或after_stat(prop)
大部分时间您必须手动计算百分比来访问。因此,更简单的方法可能是在将数据传递给 ggplot2 之前对其进行汇总。但是,我在下面的回答向您展示一种使用after_stat
and即时计算百分比的方法tapply
:
library(tidyverse)
df <- data.frame(var1 = sample(c("A","B"), size = 100, replace=TRUE),
var2 = sample(c("x", "y"), size=100, replace=TRUE))
df %>%
ggplot(aes(x = var1, fill = var2)) +
geom_bar(position = 'fill') +
geom_text(aes(x = var1,
label = scales::percent(after_stat(count / tapply(count, x, sum)[x])),
group = var2), position = "fill", stat = "count")
推荐阅读
- php - 方形付款表格php检查客户是否存在于目录中并付款
- javascript - &&=、||= 和 ??= 的作用是什么?
- mysql - 保存到sql时如何设置特定列?
- javascript - 在没有 ref 的情况下获取渲染的元素尺寸和属性(元素是一个反应功能组件)
- c# - 是什么阻止了我的列表数据在我的 DataGridView 中显示?
- node.js - 如何使用 Spectron 执行 getPath?
- laravel - laravel eloquent 错误,我无法使用 groupBy 方法创建 created_at
- html - 移动到 VPS 后,来自 http 站点的 Html 图像未显示在 Chrome 中的我的 https 站点上
- amazon-web-services - 如何在 AWS CDK 中获取当前组织的 ID?
- c# - 如果未通过身份验证,如何显示登录页面?