在 R 中向 100% 堆叠条形图添加和对齐频率标签

Adding and aligning frequency labels to 100% stacked bar charts in R

我正在尝试将带有频率信息(而非百分比)的标签添加到 R 中的 100% 堆积条形图中。

我在将标签集中在条形图的正确部分上时遇到问题。我正在使用下面的代码。我认为 position=position_fill(vjust=-0.5) 会适当地将标签居中,但显然仅此是不够的。

library(ggplot2)

df <- matrix(c('A','A','A','A','B','B','B','B','p','q','r','s','p','q','r','s',81,32,21,75,42,21,95,72),ncol=3)
colnames(df)=c("ID","Class","Frequency")
df<-as.data.frame(df)

fig <-ggplot(df,aes(fill=Class,y=Frequency,x=ID)) + geom_bar(position=position_fill(reverse=TRUE),stat="identity")
fig <- fig + coord_flip()
fig <- fig + geom_text(aes(label=Frequency),position=position_fill(vjust=-0.5))

任何和所有的帮助都是最合适的。

我们可以这样做:

library(ggplot2)
library(dplyr)

df %>% 
  mutate(Frequency = as.numeric(Frequency)) %>% 
  ggplot(aes(x = ID, y= Frequency, fill=Class)) +
  geom_col(position = position_stack(reverse = TRUE))+
  coord_flip() +
  geom_text(aes(label = Frequency),
            position = position_stack(reverse = TRUE, vjust = .5), size=6)