首页 > 解决方案 > 将样本大小标签添加到 x 轴刻度以在 ggplot 中进行加权调查?

问题描述

我有一个从国家列表及其子组的加权调查中生成的数据框

采样权重 国家 性别 百分比 n
400 一个 男性 20 100
600 一个 女性 80 70
300 男性 30 45
500 女性 70 70
100 C 男性 40 100
50 C 女性 60 70

使用 ggplot,我想创建一个条形图,其中包含 x 轴刻度中子组的 n 个值。x 轴是男性/女性亚组加上样本量的国家,y 轴是百分比。

重命名每个子组名称并在括号中添加样本大小太乏味了,所以我想知道是否有更快的方法来这样做,同时还能够将文本环绕。

所以

男性 (n = 100) 女性 (n = 70) A 国

请记住,其中一些国家/地区名称实际上在真实数据集中很长,因此标签会变得拥挤。

标签: rggplot2survey

解决方案


library(dplyr); library(ggplot2)

df1 %>%
  ggplot(aes(Gender, Percentage)) +
  geom_col() +
  geom_text(aes(y = 0, label = paste("n = ", n)), vjust = 1.5) +
  scale_x_discrete(name = NULL) +
  facet_wrap(~Country, strip.position = "bottom") +
  theme(strip.placement = "outside", strip.background = element_blank()) 

在此处输入图像描述

或者:

df1 %>%
  mutate(Gender2 = paste0(Gender, " (n = ", n, ")")) %>%
  ggplot(aes(Gender2, Percentage)) +
  geom_col() +
  scale_x_discrete(name = NULL) +
  facet_wrap(~Country, strip.position = "bottom", scales = "free_x") +
  theme(strip.placement = "outside", strip.background = element_blank()) 

在此处输入图像描述


推荐阅读