应用权重后ggplot中的标签

问题描述

我绘制了一个包含权重的条形图,但是当我想为列添加标签时,会考虑没有权重的直方图。我必须使用 after_stat 参数吗?不确定如何正确使用它?感谢您的帮助!

g <- ggplot(Y,aes(x=Q6,fill=Q3))
g + geom_bar()
g + geom_bar(aes(weight = XU$Q2),position="dodge",na.rm=TRUE)
g + geom_text(stat = "count",aes(label = after_stat(count)),vjust = -1)


structure(list(data = structure(list(Q6 = c("red","red","blue","green","grey","purple","white","black","black"),Q3 = c(1L,1L,2L,2L
),Q2 = c(2L,1L)),class = "data.frame",row.names = c(NA,-17L
)),layers = list(),scales = <environment>,mapping = structure(list(
x = ~Q6,fill = ~Q3),class = "uneval"),theme = list(),coordinates = <environment>,facet = <environment>,plot_env = 
<environment>,labels = list(x = "Q6",fill = "Q3")),class = c("gg","ggplot"
))

解决方法

我不确定您要展示什么,但也许您可以使用这种策略。首先,我将数据集转换为每个 Q6 一行,取每组各行的总和。然后我可以像这样使用 geom_colgeom_text

library(tidyverse)
data = structure(list(Q6 = c("red","red","blue","green","grey","purple","white","black","black"),Q3 = c(1L,1L,2L,2L
                             ),Q2 = c(2L,1L)),class = "data.frame",row.names = c(NA,-17L
                                       ))

data %>%
  group_by(Q6) %>%
  summarise(Q3 = sum(Q3),Q2 = sum(Q2)) %>%
  ggplot(aes(x=Q6,y=Q2,fill=Q3)) +
    geom_col() +
    geom_text(aes(label = Q2,group = Q6),vjust = -.2)

enter image description here