Поскольку вы не предоставили данные, я могу показать, как переставить столбцы, используя фиктивные данные.Для сортировки гистограммы, по сути, вам необходимо отсортировать данные по переменным, которые вы используете в качестве оси X на графике.
vec = c(rep("a", 30), rep("b", 20), rep("c", 10))
df = as.data.frame(table(vec)) # Create dummy data frame
Dataframe df
выглядит так -
vec Freq
1 a 30
2 b 20
3 c 10
сюжет будет -
df %>%
ggplot(aes(x = vec, y = Freq)) +
geom_bar(stat = "identity") # default plot
Теперь я хочу бары в порядке b, a, c.Все, что мне нужно сделать, это отсортировать мой фрейм данных в том же порядке -
df$vec = factor(df$vec, levels = c("b", "a", "c")) # assign levels in order you want to see the bar-plot
df = df[order(df$vec),] # sort dataframe on your x-variable
df %>%
ggplot(aes(x = vec, y = Freq)) +
geom_bar(stat = "identity") # barplot will be sorted on levels of factor now
Вывод приведенного выше кода - -
Я не сделал остальное форматирование, но из ваших графиков, вы хорошо с этим.Следуя этим шагам, ваши данные не должны меняться при переупорядочении баров.Если вы сможете поделиться своими данными, я лучше пойму, решит ли это вашу проблему.