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

Posted

技术标签:

【中文标题】在 R 中添加和对齐频率标签到 100% 堆叠条形图【英文标题】:Adding and aligning frequency labels to 100% stacked bar charts in R 【发布时间】:2022-01-22 11:33:16 【问题描述】:

我正在尝试将带有频率信息(不是百分比)的标签添加到 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))

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

【问题讨论】:

【参考方案1】:

我们可以这样做:

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)

【讨论】:

感谢您的回复。但在您的示例中,该图表不再是 100% 堆积条形图。这是我遇到的问题之一。我似乎无法同时实现 100% 堆叠条形图,同时也无法将标签放置在正确的段上。所以我试图让频率轴是百分比,A 和 B 的条形填充整个轴高达 100%。关于如何使用计数标签实现这一目标的任何想法? 试试position_fill() 而不是position_stack

以上是关于在 R 中添加和对齐频率标签到 100% 堆叠条形图的主要内容,如果未能解决你的问题,请参考以下文章

将水平线添加到 R 中 ggplot2 中的堆叠条形图,并在图例中显示

R语言ggplot2可视化:ggplot2可视化水平堆叠条形图并且在每个堆叠条形图的内部居中添加百分比文本标签信息

R语言ggplot2可视化堆叠的条形图(stacked bar plot)并在每一个条形图的的中间添加对应的数值值标签定位在geom_col堆叠的条形图中的每个条形段的中间

水平堆叠的独特 100% 条形图 plotly python

创建 100% 堆叠条形图

创建堆叠条形图,其中每个堆栈都缩放为总和为 100%