r - 在函数中按组将文本添加到 ggplot 条形图
问题描述
给定这样的数据集:
XX<-as.factor(c('P','P','P','R','R','R','F','F','F'))
YY<-c(2,3,6,3,5,3,2,3,4)
Facto<-c("A","B","C","A","B","C","A","B","C")
Text<-c("Z","Z","F","Z","H","Z","Z",'Z',"M")
MyData<-data.frame(XX,YY,Facto,Text)
rm(Facto)
我的目标是有一个函数来创建一个条形图,每个条形上方都有文本
MyBarPlot<-function(Data, ColName){
dodger = position_dodge(width = 0.9)
ggplot(Data, aes(x=XX, y=YY, fill=Facto))+
geom_bar(stat="identity", color="black",position=position_dodge())+
scale_fill_viridis(discrete = TRUE,option = "D",name=)+
geom_text(aes(label=Text, group = ColName), position = dodger, col='red')+
theme_minimal()
}
当我运行上述函数时,“fill=”参数工作得很好,但 geom_text 的“group by”方面却不行。
MyBarPlot(MyData,'Facto')
如果我像这样更改函数中的“group=”行:
MyBarPlot<-function(Data, ColName){
dodger = position_dodge(width = 0.9)
ggplot(Data, aes(x=XX, y=YY, fill=Facto))+
geom_bar(stat="identity", color="black",position=position_dodge())+
scale_fill_viridis(discrete = TRUE,option = "D",name=)+
geom_text(aes(label=Text, group = Facto), position = dodger, col='red')+
theme_minimal()
}
我得到了我想要的,但是我失去了在我的函数中分配这个变量的能力。有没有办法我可以在我的函数调用中动态分配“group=”,就像我对“fill=”参数所做的那样?
解决方案
这是做你想做的吗?
MyBarPlot<-function(Data, ColName){
dodger = position_dodge(width = 0.9)
ggplot(Data, aes(x=XX, y=YY, fill= {{ColName}}))+
geom_bar(stat="identity", color="black",position=position_dodge())+
viridis::scale_fill_viridis(discrete = TRUE,option = "D",name=)+
geom_text(aes(label=Text), position = dodger, col='red')+
theme_minimal()
}
MyBarPlot(MyData,Facto)
推荐阅读
- javascript - 当从另一个组件调用时将 className 传递给子组件
- javascript - 添加表格行时反应“this”未定义
- django - Post 方法不能传递给视图函数
- unity3d - 协程在第二次尝试时不运行?
- google-bigquery - 使用 Google Cloud 生态系统与构建自己的微服务架构
- php - Laravel/Twilio 接收短信
- django - django sessionid、csrrftoken 和 vue axios
- refactoring - 我能否对 UFT 脚本代码进行工具重构,尤其是在更改函数签名时?
- php - 将数组添加到另一个数组中(不是 array_push 或 array_merge)
- sql - 分组按 Varchar 字段搞砸