добавление меток размера выборки к отметкам по оси x для взвешенного опроса в ggplot?

#r #ggplot2 #survey

Вопрос:

У меня есть фрейм данных, сгенерированный на основе взвешенного опроса списка стран и их подгрупп

Веса Выборки Страна Пол Процент n
400 A Мужской 20 100
600 A Женский 80 70
300 B Мужской 30 45
500 B Женский 70 70
100 C Мужской 40 100
50 C Женский 60 70

Используя ggplot, я хочу создать столбчатую диаграмму, содержащую n значений подгруппы в галочках по оси x. По оси x будут указаны страны с подгруппами мужчин/женщин плюс размер выборки, а по оси y-процент.

Было бы слишком утомительно переименовывать имена каждой подгруппы и добавлять размер выборки в скобках, поэтому мне было интересно, есть ли более быстрый способ сделать это, одновременно имея возможность обернуть текст.

Так

Мужчина (n = 100) Женщина (n = 70) Страна А

Имейте в виду, что некоторые из этих названий стран на самом деле длинные в реальном наборе данных, поэтому метки будут переполнены.

Ответ №1:

 library(dplyr); library(ggplot2)  df1 %gt;%  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 %gt;%  mutate(Gender2 = paste0(Gender, " (n = ", n, ")")) %gt;%  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())   

введите описание изображения здесь