# Create example dataset df = data.frame(group = c(rep("A", 4), rep("B", 2), rep("C", 1), rep("D", 3), rep("E", 5), rep("F", 1), rep("G", 1), rep("H", 4)), value = sample(1:21)) # Reorder library(forcats) df_means = df %>% group_by(group) %>% summarize(value = mean(value)) df_means %>% ggplot(aes(x = fct_reorder(group, value), y = value)) + geom_col() + labs(x = "group")