Problema
Cuando creamos un diagrama de barras, ggplot2 ordena por defecto el eje x alfabéticamente, de manera que en el gráfico aparecen desordenadas las categorías.
library("ggplot2")
ggplot(df, aes(x = palabra, y= contar, fill = categoria)) + geom_bar(stat = "identity")
palabras contar categoria palabra
1 BI 67452 Defect BI
2 Bu 47279 Defect Bu
3 Re 38530 Defect Re
4 dvd 2554 Defect dvd
5 Techn 34044 Digitaal Techn
6 Retour 12190 Digitaal Retour
7 Digital 22102 Digitaal Digital
8 Kobo 1234 Digitaal Kobo
# Data frame
df <- structure(list(palabras = structure(c(1L, 2L, 6L, 4L, 8L, 7L,
3L, 5L), .Label = c("BI", "Bu", "Digital", "dvd", "Kobo", "Re",
"Retour", "Techn"), class = "factor"), contar = c(67452, 47279,
38530, 2554, 34044, 12190, 22102, 1234), categoria = structure(c(1L,
1L, 1L, 1L, 2L, 2L, 2L, 2L), .Label = c("Defect", "Digitaal"), class = "factor")), .Names = c("palabras",
"contar", "categoria"), row.names = c(NA, -8L), class = "data.frame")
Solución
Ordenamos el factor palabra conforme al orden en el que aparecen en el data frame.
df$palabra <- factor(df$palabra, levels = df$palabra)
ggplot(df, aes(x = palabra, y= contar, fill = categoria)) + geom_bar(stat = "identity")