在ggplot中,如何在条形图中仅在特定条上方打印计数?

时间:2018-10-13 03:43:42

标签: r ggplot2 bar-chart

我已经找到并被引导到许多文章中,展示了如何将统计信息放置在ggplot中的一个条形图中的所有条形之上,但是我还没有找到一个显示出如何仅在该条形图中的一个条形之上显示计数/百分比的图形。 barplot。

例如下面的情节:

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

mtcars barplot

我怎么能只在中间条上方打印“ 12”,而在抑制条上打印“ 5”和“ 15”。我要显示的上方条形图会因地块而异(例如,在另一个地块中,我想显示统计值高于5个条形中的第4个)。

2 个答案:

答案 0 :(得分: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")

答案 1 :(得分:2)

您可以使用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创建