Как выровнять метки geom_text выше уклоненного geom_col - PullRequest
0 голосов
/ 07 июня 2018

Я не могу найти способ заставить текстовые метки на этом (уклонено) geom_col выстраиваться в соответствии с их соответствующими столбцами.

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

enter image description here

Как мне это исправить?

Код:

ggplot(leads[leads$key_as_string <= max(leads$key_as_string) - 1, ], aes(fill = type)) +
  geom_col(aes(x = key_as_string, y = doc_count),
           colour = "black",
           position = position_dodge(1)) +
  scale_y_continuous(limits = c(0, max(leads$doc_count))) +
  geom_text(aes(x = key_as_string, y = doc_count, label = doc_count, group = key_as_string),
            hjust = 0.5,
            vjust = -0.5,
            size = 3,
            colour = "black",
            position = position_dodge(1)) +
  theme(panel.grid.minor.x = element_blank(),
        panel.grid.major.x = element_blank(),
        axis.text = element_text(colour = "black"))

1 Ответ

0 голосов
/ 07 июня 2018

Согласно моему комментарию, group = key_as_string является виновником здесь.По сути, код сообщает ggplot, чтобы обе метки с одинаковым значением key_as_string находились в одной группе, отменяя команду dodge.

Иллюстрация с набором данных diamonds ниже.Мы видим, что удаление эстетического отображения group меняет положение меток:

p <- ggplot(diamonds %>%
              filter(cut %in% c("Fair", "Good")) %>%
              group_by(cut, clarity) %>%
              summarise(carat = mean(carat)), 
            aes(clarity, carat, fill = cut, label = round(carat, 2))) + 
  geom_col(position = position_dodge(1))

gridExtra::grid.arrange(
  p + geom_text(position = position_dodge(1), aes(group = clarity)),
  p + geom_text(position = position_dodge(1)),
  ncol = 1
)

plot

...