Как центрировать мои текстовые метки (демонстрируя группы населения) по вертикали? - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть следующий график, описывающий распределение академических c кредитов в зависимости от того, где вы живете недалеко от кампуса или на некотором расстоянии:

enter image description here

Код выглядит следующим образом:

totdata%>%filter(status_registrerad=="registrerad")%>%
filter(ADMISSIONROUND_ID=="HT2017"|ADMISSIONROUND_ID=="HT2018"|ADMISSIONROUND_ID=="HT2019")%>%
ggplot(aes(x=fct_reorder(FLYTT, PERC_CREDIT, .fun = median,na.rm=T), y=PERC_CREDIT))+
geom_boxplot()+coord_flip()

Я хотел бы добавить информацию о размерах групп, чтобы график не вводил в заблуждение (в верхней группе всего 14 членов, а в следующей - 351. ..).

Полагаю, я мог бы добавить эту информацию к сюжету, но ... думаю, это выглядело бы грязно. Было бы намного чётче отобразить размеры групп на отдельном графике, тогда я мог бы позвонить им обоим с помощью ggarrange.

Мой желаемый конечный результат выглядит следующим образом:

enter image description here

Моя цель - создать график, содержащий ряд групповых групп населения. из моего первого сюжета. Чтобы добиться этого, я пытаюсь переработать код для первого графика, опуская значение y и добавляя geom_text.

totdata%>%filter(status_registrerad=="registrerad")%>%
filter(ADMISSIONROUND_ID=="HT2017"|ADMISSIONROUND_ID=="HT2018"|ADMISSIONROUND_ID=="HT2019")%>%
ggplot(aes(x=fct_reorder(FLYTT, PERC_CREDIT, .fun = median,na.rm=T)))+
geom_text(stat='count',aes(label=..count..))

Это дает несколько разумные результаты (хотя фон должен быть опущен, шрифт увеличен, а координаты перевернуты), но метки по-прежнему имеют значение y, отражающее совокупность в группе.

enter image description here

Я не могу указать другое значение y, поскольку geom_text не может быть указан с одним. Я пытался указать vjust="center", но безрезультатно.

Как отцентрировать мои метки по вертикали, сохраняя при этом их показ в группах населения?

Выдержка из данных (ограничено 100 наблюдений на читабельность)

structure(list(start_date = structure(c(17405, 17405, 17405, 
17405, 17405, 17405, 17405, 17405, 17405, 17405, 17405, 17405, 
17405, 17405, 17405, 17405, 17405, 17405, 17405, 17405, 17405, 
17405, 17405, 17405, 17405, 17405, 17405, 17405, 17405, 17405, 
17405, 17405, 17405, 17405, 17405, 17405, 17405, 17405, 17405, 
17405, 17405, 17405, 17405, 17405, 17405, 17405, 17405, 17405, 
17405, 17405, 17405, 17405, 17405, 17405, 17405, 17405, 17405, 
17405, 17405, 17405, 17405, 17405, 17405, 17405, 17405, 17405, 
17405, 17405, 17405, 17405, 17405, 17405, 17405, 17405, 17405, 
17405, 17405, 17405, 17405, 17405, 17405, 17405, 17405, 17405, 
17405, 17405, 17405, 17405, 17405, 17405, 17405, 17405, 17405, 
17405, 17405, 17405, 17405, 17405, 17405, 17405), class = "Date"), 
    ADMISSIONROUND_ID = structure(c(6L, 6L, 6L, 6L, 6L, 6L, 6L, 
    6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 
    6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 
    6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 
    6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 
    6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 
    6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 
    6L, 6L, 6L), .Label = c("HT2012", "HT2013", "HT2014", "HT2015", 
    "HT2016", "HT2017", "HT2018", "HT2019"), class = c("ordered", 
    "factor")), status_registrerad = c("registrerad", "registrerad", 
    "registrerad", "registrerad", "registrerad", "registrerad", 
    "registrerad", "registrerad", "registrerad", "registrerad", 
    "registrerad", "registrerad", "registrerad", "registrerad", 
    "registrerad", "registrerad", "registrerad", "registrerad", 
    "registrerad", "registrerad", "registrerad", "registrerad", 
    "registrerad", "registrerad", "registrerad", "registrerad", 
    "registrerad", "registrerad", "registrerad", "registrerad", 
    "registrerad", "registrerad", "registrerad", "registrerad", 
    "registrerad", "registrerad", "registrerad", "registrerad", 
    "registrerad", "registrerad", "registrerad", "registrerad", 
    "registrerad", "registrerad", "registrerad", "registrerad", 
    "registrerad", "registrerad", "registrerad", "registrerad", 
    "registrerad", "registrerad", "registrerad", "registrerad", 
    "registrerad", "registrerad", "registrerad", "registrerad", 
    "registrerad", "registrerad", "registrerad", "registrerad", 
    "registrerad", "registrerad", "registrerad", "registrerad", 
    "registrerad", "registrerad", "registrerad", "registrerad", 
    "registrerad", "registrerad", "registrerad", "registrerad", 
    "registrerad", "registrerad", "registrerad", "registrerad", 
    "registrerad", "registrerad", "registrerad", "registrerad", 
    "registrerad", "registrerad", "registrerad", "registrerad", 
    "registrerad", "registrerad", "registrerad", "registrerad", 
    "registrerad", "registrerad", "registrerad", "registrerad", 
    "registrerad", "registrerad", "registrerad", "registrerad", 
    "registrerad", "registrerad"), FLYTT = c("utflyttad från eller utanför Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "inflyttad eller boende Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "inflyttad eller boende Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "inflyttad eller boende Trollhättan", 
    "inflyttad eller boende Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "inflyttad eller boende Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "inflyttad eller boende Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "inflyttad eller boende Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "Utflyttad Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "inflyttad eller boende Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "inflyttad eller boende Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "inflyttad eller boende Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "inflyttad eller boende Trollhättan", 
    "inflyttad eller boende Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "inflyttad eller boende Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "oklart", "inflyttad eller boende Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "inflyttad eller boende Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "inflyttad eller boende Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "inflyttad eller boende Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "inflyttad eller boende Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "inflyttad eller boende Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "inflyttad eller boende Trollhättan", 
    "inflyttad eller boende Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "utflyttad från eller utanför Trollhättan", 
    "utflyttad från eller utanför Trollhättan", "utflyttad från eller utanför Trollhättan"
    ), PERC_CREDIT = c(84.3333333333333, 89.3333333333333, 11, 
    89.3333333333333, 0, 89.3333333333333, 18.3333333333333, 
    40, 79.3333333333333, 1.33333333333333, 80.6666666666667, 
    60, 89.3333333333333, 0, 86, 71.6666666666667, 50, 20, 56.6666666666667, 
    10.3333333333333, 89.3333333333333, 27, 80, 82.6666666666667, 
    89.3333333333333, 81, 12, 81, 70, 75, 8.33333333333333, 19.3333333333333, 
    0, 35.6666666666667, 31.3333333333333, 84.3333333333333, 
    80, 68.6666666666667, 89.3333333333333, 31.3333333333333, 
    25.6666666666667, 24.6666666666667, 76.3333333333333, 76.3333333333333, 
    80, 81.6666666666667, 70, 0, 89.3333333333333, 81.3333333333333, 
    7, 0, 0.666666666666667, 75.6666666666667, 0.666666666666667, 
    51.3333333333333, 90, 0, 47.6666666666667, 90, 56.3333333333333, 
    0, 81, 70, 89.3333333333333, 89.3333333333333, 35, 24, 89.3333333333333, 
    80, 0, 84.3333333333333, 41, 13.3333333333333, 55.6666666666667, 
    1.33333333333333, 50.6666666666667, 83.6666666666667, 85, 
    1.66666666666667, 65.6666666666667, 46.3333333333333, 70, 
    2.66666666666667, 53, 95, 50, 69.3333333333333, 76.3333333333333, 
    65.6666666666667, 72.6666666666667, 80, 0.666666666666667, 
    84.3333333333333, 64.3333333333333, 0.666666666666667, 50, 
    89.3333333333333, 84.3333333333333, 12.3333333333333)), row.names = c(NA, 
-100L), groups = structure(list(start_date = structure(17405, class = "Date"), 
    .rows = list(1:100)), row.names = c(NA, -1L), class = c("tbl_df", 
"tbl", "data.frame"), .drop = TRUE), class = c("grouped_df", 
"tbl_df", "tbl", "data.frame"))

1 Ответ

1 голос
/ 11 февраля 2020

Это не совсем то решение, которое вы искали, но, на мой взгляд, оно проще и элегантнее: измените имя меток вашей оси, указав количество наблюдений:

totdata2 <- do.call(rbind, lapply(split(totdata, totdata$FLYTT), function(x)
{
    x$FLYTT <- paste0(x$FLYTT, "\n", "(n = ", length(x$FLYTT), ")"); x
}))

Теперь, когда Вы делаете свой график, используя totdata2, вы получаете это:

totdata2%>%filter(status_registrerad=="registrerad")%>%
filter(ADMISSIONROUND_ID=="HT2017"|ADMISSIONROUND_ID=="HT2018"|ADMISSIONROUND_ID=="HT2019")%>%
ggplot(aes(x=fct_reorder(FLYTT, PERC_CREDIT, .fun = median,na.rm=T), y=PERC_CREDIT))+
geom_boxplot()+coord_flip()

enter image description here

...