Как аннотировать текст в постоянном вертикальном месте разных графиков geom_col - PullRequest
0 голосов
/ 07 апреля 2020

Мне нужно написать функцию, которая сделает geom_plot для разных данных с разным количеством столбцов. Мне нужно добавить текстовую аннотацию в постоянном месте графика, независимо от того, сколько столбцов у него будет. Он всегда будет на y = 1.02, и я хочу, чтобы он всегда был выровнен вправо. Моя попытка на одном графике ниже:

mtcars %>% 
    mutate(gear = as.factor(as.character(gear))) %>% 
    group_by(gear) %>% summarise(qsec = sum(qsec)) %>% 
    mutate(qsec_index = qsec / mean(qsec)) %>% 
    ggplot() + 
        geom_col(aes(gear, qsec_index)) + 
        geom_hline(aes(yintercept = 1)) + 
        geom_text(aes(x = 3.4, y = 1.02, label = 'Average'))

enter image description here Но как я могу автоматизировать его, чтобы он всегда был выровнен по правому краю, независимо от того, имеют ли мои исходные данные 2, 4, 5 et c. столбцы?

1 Ответ

1 голос
/ 07 апреля 2020

Вы можете разместить свою аннотацию в соответствии с количеством уровней вашей переменной x. Здесь мы будем использовать carb вместо gear для демонстрации:

mtcars %>% 
    mutate(carb = as.factor(as.character(carb))) %>% 
    group_by(carb) %>% summarise(qsec = sum(qsec)) %>% 
    mutate(qsec_index = qsec / mean(qsec)) %>% 
    ggplot() + 
        geom_col(aes(carb, qsec_index)) + 
        geom_hline(aes(yintercept = 1)) + 
        geom_text(aes(x = length(levels(carb)) + .4, y = 1.02, label = 'Average'),
                  hjust = 1, vjust = -1)

, и все равно будет работать, как и ожидалось, с gear:

mtcars %>% 
    mutate(gear = as.factor(as.character(gear))) %>% 
    group_by(gear) %>% summarise(qsec = sum(qsec)) %>% 
    mutate(qsec_index = qsec / mean(qsec)) %>% 
    ggplot() + 
        geom_col(aes(gear, qsec_index)) + 
        geom_hline(aes(yintercept = 1)) + 
        geom_text(aes(x = length(levels(gear)) + .4, y = 1.02, label = 'Average'),
                  hjust = 1, vjust = -1)

enter image description here Создано в 2020-04-07 пакетом представительство (v0.3.0)

...