【问题标题】:Adding labels to ends of bars in ggplot geom_bar在ggplot geom_bar中将标签添加到条的末端
【发布时间】:2017-11-02 04:13:09
【问题描述】:

这是一个条形图:

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

应该产生这个:

我想在末尾添加标签,显示每个条中 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

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

【问题讨论】:

  • 奖励:为什么图表不是降序排列,这是我使用reorder()的目标
  • 有很多关于coord_flip搞砸要素订单的讨论,例如Order of legend entries in ggplot2 barplots with coord_flip()
  • 其他问题请参阅:ggplot2 coord_flip() with geom_text
  • 感谢@user3293236 让图表标签出现,但添加的标签位于条形图的根部且不符合条件。这也发生在你身上吗? ggplot(mtcars, aes(x = factor(cyl), y = mpg)) + geom_bar(stat="identity") + coord_flip() + geom_text(aes(label = mpg), stat = "identity")
  • 感谢您提供有关影响订购的因素的提示,我将专注于那个单独的 @AdamQuek

标签: r ggplot2


【解决方案1】:

这将通过为标签绘图生成新的 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))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-02
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    • 2012-07-24
    • 1970-01-01
    • 2017-04-24
    • 1970-01-01
    相关资源
    最近更新 更多