首页 > 解决方案 > 如何将子组总和作为标签添加到ggplot2中的直方图?

问题描述

我想按组将总和添加到我的直方图中作为标签。我有以下数据:

group total
a       2
a       2
b       4
b       4
c       2
c       9
c       9

我的 r 代码是

size<-df%>%
  group_by(group)%>%
  summarise(total=sum(total))

df%>%
  mutate(name = fct_reorder(group,desc(total))) %>%
  ggplot(aes(x=group, y=total)) +
  geom_bar(stat="identity", fill="#f68060", alpha=1, width=.7) +
  coord_flip() +
  xlab("Active Leisure Type") +
  theme_bw()+
  geom_text(aes(y=size,label=size))

它不工作。我只是想知道是否会geom_text部分进行任何修复?

标签: r

解决方案


sum我们可以为total每个组中的标签创建一个新列。将除最后一个之外的所有值替换为空,以便每个条形图只打印一个值。

library(tidyverse)

df %>%
  mutate(name = fct_reorder(group,desc(total))) %>%
  group_by(group) %>%
  mutate(new_total=sum(total), 
         new_total = replace(new_total, -n(), '')) %>%
  ggplot(aes(x=group, y=total)) +
  geom_bar(stat="identity", fill="#f68060", alpha=1, width=.7) +
  coord_flip() +
  xlab("Active Leisure Type") +
  theme_bw() + 
  geom_text(aes(label=new_total), size = 5, hjust = -0.5, 
            vjust = 1, position = "stack")

在此处输入图像描述


推荐阅读