geom_text 带有闪避条形图

geom_text with dodged barplot

我尝试添加文字 Position geom_text on dodged barplot 但它不适用于我的简单数据

data=data.frame(s=c(10,13,17,8),
                pr=c("a","b","a","b"),
                m=c(rep(as.Date('01.01.2015','%d.%m.%Y'),2), rep(as.Date('01.02.2015','%d.%m.%Y'),2)))

和 ggplot

ggplot(data = data 
       ,aes(x = m, y = s,fill=pr ,ymax = max(s)*1.1))+
  geom_bar(position = "dodge",stat="identity")+
  geom_text(aes(y=s/2,label=paste(round(s,3),"%")),position = position_dodge(width=1))+
  scale_x_date(labels = date_format("%m/%y"),breaks = date_breaks("months"))

我得到

如何在正确的位置(每个栏的中间)添加文本? 谢谢!

你可以试试

ggplot(data = data, aes(x = as.factor(m), y = s,fill=pr ,ymax = max(s)*1.1)) + 
  geom_bar(position = "dodge", stat="identity") + 
  geom_text(aes(y=s/2,label=paste(round(s,3),"%")),position = position_dodge(.9)) + 
  scale_x_discrete(labels = function(x) format(as.Date(x), "%m/%y")) + 
  xlab("m")