使用填充美学时在ggplot2中的条形上方添加文本

问题描述

我想将*放在我的柱状图中的某些柱上方。如果我没有使用fill美学,那将很简单,但是有了它,我就无法弄清楚如何在条形图上放置星星,而不是x轴刻度。

我尝试使用geom_text,但未成功。我看到我可以使用annotate手动添加它们,但这是一个不太好的解决方案。

这里是数据集和图的最小示例,我想将*添加到:

df <- data.frame(age = c('year1','year1','year2','year2'),category = c('cat1','cat2','cat1','cat2'),value = 1:4,star = c("","*","","")
)

g <- ggplot(data = df,aes(category,proportion,fill = age))
g <- g + geom_bar(stat = "identity",position = position_dodge())
g

enter image description here

如何在相应栏的*列的数据集中添加star

解决方法

我建议使用geom_text()以躲避风格使用这种方法:

library(ggplot2)
#Data
df <- data.frame(age = c('year1','year1','year2','year2'),category = c('cat1','cat2','cat1','cat2'),value = 1:4,star = c("","*","","")
)
#Plot
g <- ggplot(data = df,aes(category,value,fill = age,label=star))
g <- g + geom_bar(stat = "identity",position = position_dodge())
g <- g + geom_text(position = position_dodge(0.9),vjust=-0.5)
g

输出:

enter image description here

让我知道这是否是您想要的。