Вот пример ваших данных:
district <- sample(LETTERS, 1000, replace = TRUE)
xo <- c("x","o")
type <- sample(xo, 1000, replace = TRUE)
Вот ваш df
. Вам нужно создать столбец count
, по которому вы можете упорядочить свои районы.
library(tidyverse)
df <- as.data.frame(cbind(district, type)) %>%
group_by(district) %>%
mutate(count = n())
В аргументе aes
вы можете указать reorder
район по убыванию количества:
ggplot(df, aes(x = reorder(district, -count), fill=type)) +
geom_bar()
И если вы не хотите изменять свой df
путем группировки или добавления переменной count, вы можете сделать это:
df %>%
group_by(district) %>%
mutate(count = n()) %>%
ggplot(aes(x = reorder(district, -count), fill=type)) +
geom_bar()