Я создаю сложную гистограмму с использованием ggplot следующим образом:
plot_df <- df[!is.na(df$levels), ]
ggplot(plot_df, aes(group)) + geom_bar(aes(fill = levels), position = "fill")
Что дает мне что-то вроде этого:
Как мне изменить порядок самих штабелированных баров, так что уровень 1 находится внизу, а уровень 5 находится в верхней части каждого столбца?
Я видел несколько вопросов по этому вопросу (например, " Как контролировать упорядочивание штабелированной гистограммы с использованием идентификатора на ggplot2"), и общее решение, похоже, заключается в изменении порядка данных на этом уровне, так как тот, который ggplot использует, определяет порядок
Поэтому я попытался переупорядочить с помощью dplyr:
plot_df <- df[!is.na(df$levels), ] %>% arrange(desc(levels))
Однако сюжет выходит так же. Также, похоже, не имеет значения, упорядочиваю ли я по возрастанию или убыванию
Вот воспроизводимый пример:
group <- c(1,2,3,4, 1,2,3,4, 1,2,3,4, 1,2,3,4, 1,2,3,4, 1,2,3,4)
levels <- c("1","1","1","1","2","2","2","2","3","3","3","3","4","4","4","4","5","5","5","5","1","1","1","1")
plot_df <- data.frame(group, levels)
ggplot(plot_df, aes(group)) + geom_bar(aes(fill = levels), position = "fill")