如何使用geom_text()标记geom_bar(position ='fill')

时间:2019-03-14 14:42:26

标签: r ggplot2 geom-bar geom-text

经过一段时间的搜索,我没有找到解决我的问题的示例:

如何使用geom_text()标记geom_bar(position ='fill')?

mydf = data.frame(
  'sample' = sample(x = LETTERS[1:3], size = 111,replace = T),
  'category' = sample(x = 1:11, size = 111,replace = T)
)


mydf %>% 
  group_by(sample) %>%
  ggplot( aes(fill=sample, x=category)) + 
  geom_bar( position="fill" )
 # Does not work: +  geom_text(position='fill', aes(label = ..y..))

预期结果:如示例中所示,在小节的中间标记%(除了它显示计数,与我的情况不同): 来自https://ggplot2.tidyverse.org/reference/geom_text.html

我想真正的问题是,如果我使用geom_bar(position ='fill'),什么是“ y”和“ label”

我对ggplot混合计算(每个类别的比例)和可视化感到困惑。

谢谢!

1 个答案:

答案 0 :(得分:0)

创建一个新的数据框ggp,以存储要绘制的数据

ggp <- mydf %>% count(sample,category)

使用数据帧中的数据绘制geom_bar-x=category, y=count(n), fill=sample

ggplot(ggp,aes(category,n,fill=sample)) +
geom_bar(stat="identity",position = "fill") + 
geom_text(aes(label=n),position = position_fill(vjust = 0.5))