【问题标题】:In ggplot, how can I print the count above only a specifc bar in a barplot?在 ggplot 中,如何仅在箱线图中的特定条形上方打印计数?
【发布时间】:2019-03-18 06:20:06
【问题描述】:

我已经找到并被引导到许多帖子,这些帖子展示了如何在 ggplot 中的条形图中将统计信息放在所有条形上方,但我还没有找到一篇说明如何仅在一个条形上方显示计数/百分比的帖子条形图。

例如下面的情节:

ggplot(mtcars, aes(x = gear)) + geom_bar() +
  geom_text(stat='count',aes(label=..count..),vjust=-1)

我怎么能只在中间条上方打印“12”并禁止打印“5”和“15”。我想在上面显示计数的条形图会因地块而异(例如,在另一个图中,我想在 5 个条形图中显示第 4 个以上的统计数据)。

【问题讨论】:

  • 那篇文章和它引用的一篇文章仅涉及将值置于所有条形之上。我想仅在条形图中的特定条形上方打印这些值。
  • 这几乎是引用链接的副本,并且不鼓励在 SO 上提出两部分问题。所以它也是可能重复的,我鼓励您搜索一个并记录您的搜索,然后再提出任何进一步的上诉。您预计在发布问题之前进行搜索。
  • @42,根据您的建议进行了修改。感谢您的指导。
  • 对不需要值的位置使用包含"" 的向量。还有......“如何在ggplot中手动设置geom_bar填充颜色”呢?

标签: r ggplot2 bar-chart


【解决方案1】:

您可以使用 stat() 计算计数并为 geom_text() 定义您想要的任何条件

library(ggplot2)
library(dplyr)

# Select the gear with the second highest count
g <- mtcars %>% group_by(gear) %>% summarise(n = n()) %>% arrange(rev(n)) %>% .[2, 1]

ggplot(mtcars, aes(x = gear)) +
    geom_bar() +
    geom_text(stat='count',
          aes(label=stat(ifelse(x == !!g, count, NA))), # Apply condition
          color = "blue",
          vjust=-1) +
    NULL

reprex package (v0.2.1) 于 2018 年 10 月 13 日创建

【讨论】:

  • 比我想出的答案要好得多。这应该是公认的方法。
【解决方案2】:

我找不到使用 geom_text r geom_bar 但?annotate 中的示例看起来很简单>

ggplot(mtcars, aes(x=gear, group = gear)) + geom_bar(fill=c("red", "green","blue")) + 
     annotate("text", x=4, y = 13, label = "12")

【讨论】:

    猜你喜欢
    • 2018-07-15
    • 2021-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-26
    • 2016-09-16
    • 1970-01-01
    • 2012-11-02
    相关资源
    最近更新 更多