#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())