在ggplot条形图

时间:2016-02-10 22:23:19

标签: 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()

我正在密谋:

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”)

正如您所看到的,我正在尝试绘制“费率”变量。但我还想在条形图的右侧放下“用户”变量的值。它看起来像这样:

sample plot

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

而且,虽然上面的例子没有显示出来,但如果拥有最多用户数的群集位于顶部,那么我会很高兴,其余的则来自那里。

1 个答案:

答案 0 :(得分:4)

以下是使用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 = "")))

enter image description here