r - 条形图中的ggplot累积值
问题描述
我正在尝试开发一个条形图,显示几个类别的累积值(在本例中为“a”和“b”)。图表本身看起来不错,因为 a 的值绘制为 10,b 的值绘制为 9.5,但标签已关闭。b 的标签显示 b (1.5, 1, 5, 2) 的单个值,而不是正确的总和“9.5”。
所以,问题是:如何告诉 ggplot 我想将累积值(总和)视为标签而不是每个单个值?
最好的paradroid
library(ggplot2)
library(scales)
mydf<-data.frame(col1=c("a","b", "b", "b", "b")
,col2=c(10,1.5, 1, 5, 2))
barchart <- function(df, v1, v2)
{
ggplot(df, aes(x = v1, y = v2, na.rm = TRUE)) +
geom_bar(stat = "identity") +
scale_y_continuous(labels = scales::comma) +
geom_text(aes(label = v2)) +
coord_flip()
}
bchart <- barchart(mydf, mydf$col1, mydf$col2)
print(bchart)[![enter image description here][1]][1]
解决方案
您可以使用 来汇总函数内的数据dplyr
,假设您不需要查看每个条形的构建。
library(ggplot2)
library(dplyr)
library(scales)
mydf<-data.frame(col1=c("a","b", "b", "b", "b")
,col2=c(10,1.5, 1, 5, 2))
barchart <- function(df, v1, v2)
{
df %>%
group_by({{v1}}) %>%
summarise(v2 = sum({{v2}})) %>%
ggplot(aes(x = {{v1}}, y = v2)) +
geom_col() +
scale_y_continuous(labels = scales::comma) +
geom_text(aes(label = v2)) +
coord_flip()
}
bchart <- barchart(mydf, col1, col2)
bchart
由reprex 包于 2021-08-23 创建 (v2.0.0 )
推荐阅读
- flutter - 从 sql 检索的布尔值作为字符串
- pandas - 创建具有不等长度列表的熊猫数据框
- sql - 如何从通过“路径”列存储的树层次结构中过滤出具有某些继承标志的子树?
- python - 如何修复 TypeError:“NoneType”对象不可迭代
- database-design - 用于在通知源上存储通用过滤器的数据库设计
- javascript - MUI 自动完成自定义选项,不显示所选选项
- javascript - 本地静音视频时,Agora 远程视图发生变化
- go - 无法写入 cookie
- laravel - 带有plesk的Laravel + Vue App不加载所有资产
- python - 使用 python 更改数据集维度以绘制一个线时间序列数年