ggplot堆叠栏-隐藏标签但保留标签位置

时间:2018-08-07 20:22:41

标签: r ggplot2 data-visualization

我在ggplot中有一个堆积的条形图,每个条形的中心都带有geom_text()标签。我想在小条上隐藏标签,以免图形看起来过于拥挤。我可以使用下面的代码来做到这一点,但是如下面的链接图片所示,它们使标签的位置混乱(它们不再居中)。

有没有一种方法可以隐藏条形图标签,而不会弄乱其余标签的位置?

ggplot(data=outcome,
      aes(x = category, y=percent,fill = outcome)) +
geom_bar(stat='identity') +
coord_flip() +
geom_text(data=outcome %>% filter(percent>=0.1),aes(label = percent), size = 3,position = position_stack(vjust = 0.5),
          check_overlap=TRUE) 

stacked bar chart with mispositioned labels

1 个答案:

答案 0 :(得分:1)

您可以使用ifelse()语句。每当我不想要标签时,在这里我都留空白,但是NA也可以。

library(ggplot2)

df = data.frame(
     x = factor(c(1, 1, 2, 2)),
     y = c(1, 3, 2, 1),
     grp = c("a", "b", "a", "b")
)

ggplot(data = df, aes(x, y, fill = grp)) +
     geom_col() +
     coord_flip() +
     geom_text(aes(label = ifelse(y > 1, y, "")), 
               position = position_stack(vjust = 0.5),
               size = 3)

reprex package(v0.2.0)于2018-08-07创建。