2017-11-26

Diagrama de barras en ggplot - Preservar orden del data frame

Title

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")
  • Datos
  •  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")
    

    Referencias

    No hay comentarios:

    Publicar un comentario

    Nube de datos