r - 如何使用 ggalluvial 向冲积地块中的地层添加百分比值?
问题描述
我正在寻找将四舍五入的百分比标签添加到冲积地层的最方便的方法。以下示例中有 50 个案例。独立于第 1 阶段或第 2 阶段,每个案例都属于 A、B 或 C 组。我想显示每个阶段的相关组从属关系。
library(ggplot2)
library(ggalluvial)
df <- data.frame('id' = rep(1:50,2),
'stage' = c(rep(1,50), rep(2,50)),
'group' = sample(c('A','B','C'), 100, replace = TRUE))
ggplot(df,
aes(x = stage, stratum = group, alluvium = id, fill = group)) +
scale_x_discrete(expand = c(.1, .1)) +
geom_flow() +
geom_stratum(alpha = .5)
有没有办法在不计算初始数据框中的百分比列的情况下向层(条形段)添加四舍五入的百分比标签(包括“%”)?如果我没有完全弄错的话,geom_text 在这里的工作方式与在 geom_bar() 中的工作方式不同。
解决方案
这个问题的标准 ggplot2 解决方案是使用“计算美学”。这些美学规范不是来自传递给的数据,ggplot()
而是来自统计转换 (the stat_*()
) 的输出,用于渲染图形元素 (the geom_*()
)。此输出的列(用户很少看到)称为“计算变量”。关于这个主题的文档是有限的并且有点过时,使用stat()
而不是after_stat()
调用它们。由于 ggalluvial 不支持计算变量,因此@bencekd 的答案当时是正确的。
截至今天,v0.12.0 在 CRAN 上提供计算变量的支持和文档。特别是,三个计算变量可用,它们对应于stat_bin()
或使用的具有相同名称的变量stat_count()
:n
、count
(的加权版本n
)和prop
(从 计算的轴内比例count
)。看起来您想要使用prop
,如下图所示:
library(ggplot2)
library(scales)
library(ggalluvial)
df <- data.frame('id' = rep(1:50,2),
'stage' = c(rep(1,50), rep(2,50)),
'group' = sample(c('A','B','C'), 100, replace = TRUE))
ggplot(df,
aes(x = stage, stratum = group, alluvium = id, fill = group)) +
scale_x_discrete(expand = c(.1, .1)) +
geom_flow() +
geom_stratum(alpha = .5) +
geom_text(stat = "stratum",
aes(label = percent(after_stat(prop), accuracy = .1)))
由reprex 包于 2020-07-14 创建(v0.3.0)
推荐阅读
- javascript - 如何重构为一个 API 调用以进行多个 mySQL 查询?
- oracle - 在oracle数据库中将字符串转换为base64
- rna-seq - MarkDuplicates Picard
- java - JTable 和 JScrollPane 未按应有的方式显示
- amazon-ec2 - Sagemaker 训练作业无法连接到 ec2 实例
- api - 括号订单币安期货API
- java - 如何在 Wildfly 21 上配置 Jakarta 持久性
- mysql - 复合主键可以让外键引用父表吗
- python - 如何在python中从*args打印变量名
- javascript - 使用 Nodejs 中的 azure 函数将图像从 URL 上传到 azure blob