向ggplot条形图中的每个条形簇添加文本变量

hoo*_*eno 2 r ggplot2

我有一些像这样的数据:

site <- c('twitter', 'facebook', 'gplus')
bouncerate <- c(35, 29, 17)
conversionrate <- c(20, 30, 32)
users <- c(350, 800, 42)
df <- data.frame(site, bouncerate, conversionrate, users) %>% melt()
Run Code Online (Sandbox Code Playgroud)

我这样绘制它:

ggplot(subset(df, variable!='users'), aes(x=site, y=value)) + 
  geom_bar(stat="identity", aes(fill=variable), position="dodge") +
  coord_flip() +
  scale_fill_brewer(palette = "Set1”)
Run Code Online (Sandbox Code Playgroud)

如您所见,我正在尝试绘制“比率”变量。但是我也想将“ users”变量的值放在条形图的右侧。看起来像这样:

样地

所以我的问题是,我该如何获得那些用户数?我以为geom_label可以做到这一点,但我看不到如何将标签的坐标绑定到群集。

而且,虽然上面的示例没有显示它,但是如果用户数最多的集群位于顶部,而其余的则从顶部降落,我会感到很高兴。

bee*_*oot 5

这是使用geom_text的方法:

ggplot(subset(df, variable!='users'), aes(x=site, y=value)) + 
  geom_bar(stat="identity", aes(fill=variable), position="dodge") +
  coord_flip() +
  scale_fill_brewer(palette = "Set1") +
  geom_text(data=subset(df, variable=="users"), 
aes(x=site, y=40, 
label=paste("(", value ,"\n", variable, ")", sep = "")))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明