Метки ggplot2 не будут уворачиваться от полос geom_col

Я задавал связанные вопросы, и эти ответы не решают мою проблему с ярлыками, которые не уклоняются, чтобы соответствовать полосам geom_col:

Данные

x <- structure(
  list(capacity = c(0, 0, 0, 2.1, 3.1, 4, 4.6, 5.6, 6, 
                                 1.9, 2.3, 3.8),
       year = c("FY21", "FY21", "FY21", "FY21", "FY21",
                "FY20", "FY20", "FY20", "FY20", "FY19", "FY19", "FY19"),
       unified_date = structure(c(18536, 18567, 18597, 18628, 18659,
                                  18567, 18597, 18628, 18659, 18536,
                                  18567, 18597), class = "Date")),
  row.names = c(NA, -12L), class = c("tbl_df", "tbl", "data.frame"))                   

Код

ggplot2::ggplot(x, aes(x = unified_date, y = capacity, fill = year)) +
  geom_col(position = "dodge") +
  geom_text(aes(label = capacity),
            position = position_dodge(width = 1),
            vjust = -0.5, size = 4)

Диаграмма

not-dodged ggplot

Я пробовал добавлять fill = year к geom_text aes или group = year, перемещая aes значения, варианты на position_dodge() - ничего.


person Sam Firke    schedule 09.10.2020    source источник


Ответы (1)


Попробуй это:

#Code
ggplot2::ggplot(x, aes(x = factor(unified_date), y = capacity, fill = year)) +
  geom_bar(stat='identity',position = "dodge") +
  geom_text(aes(label = capacity),
            position=position_dodge(width=0.9), size = 4,vjust=-0.5)+
  xlab('Date')

Выход:

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

И если вы хотите правильно работать с месяцем, попробуйте следующее:

#Code 2
x %>% mutate(Month=format(unified_date,'%b')) %>%
  mutate(Month=factor(Month,levels = unique(Month),ordered = T)) %>%
  ggplot2::ggplot(aes(x = Month, y = capacity, fill = year)) +
  geom_bar(stat='identity',position = "dodge") +
  geom_text(aes(label = capacity),
            position=position_dodge(width=0.9), size = 4,vjust=-0.5)+
  xlab('Date')

Выход:

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

person Duck    schedule 09.10.2020
comment
так что основная проблема заключалась в том, что position_dodge() не работал с датой? - person Sam Firke; 09.10.2020
comment
@SamFirke Это произошло из-за дат, поскольку шкала определена специально для дат, вы получили совпадение меток. Добавление формата к датам изменило все! Надеюсь, вам было ясно! - person Duck; 09.10.2020