在ggplot geom_bar中向条形末端添加标签

时间:2017-06-01 06:45:39

标签: r ggplot2

这是条形图:

ggplot(mtcars) +
  geom_bar(aes(x = reorder(factor(cyl), mpg), y = mpg), stat="identity") +
  coord_flip()

应该产生这个: enter image description here

我想在最后添加标签,显示每个栏中mpg的总价值。例如,4cyl看起来大约是290只眼球。我想添加一个显示确切数字的标签。

我想尝试并看看它们的外观,所以为了完整性:

  • 在酒吧顶部的内部
  • 在顶部的酒吧外面
  • 奖金是我可以控制标签是垂直还是水平显示。

我发现了this SO帖子但是却努力复制所选择的答案。这是我的尝试:

ggplot(mtcars) +
  geom_bar(aes(x = reorder(factor(cyl), mpg), y = mpg), stat="identity") +
  coord_flip() +
  geom_text(aes(label = mpg))

哪个出错:

  

错误:geom_text需要以下缺少美学:x,y

如何在条形图的末端添加标签?

1 个答案:

答案 0 :(得分:4)

通过为标签绘图生成新的data.frame,可以满足您的需求。您可以通过调整nudge_yangle来自定义文字的位置。

library(dplyr)
tmp <- mtcars %>% group_by(cyl) %>% summarise(tot_mpg = sum(mpg))
tmp$cyl <- factor(tmp$cyl)
ggplot(mtcars) +
  geom_bar(aes(x = reorder(factor(cyl), mpg), y = mpg), stat="identity") +
  coord_flip() + geom_text(data = tmp, nudge_y = 10, angle = 270,
                           aes(x = cyl, y = tot_mpg, label = tot_mpg))