How to reorder the groups in a grouped bar-chart

19,549

We need to convert the 'Groups' to factor with levels specified in that order

df_bars$Groups <- factor(df_bars$Groups, levels = c('B', 'C', 'A'))

Then using the ggplot code in the OP's post

enter image description here

Share:
19,549
Gonzalo
Author by

Gonzalo

Updated on June 05, 2022

Comments

  • Gonzalo
    Gonzalo almost 2 years

    I want to create a grouped bar-chart with groups appearing in a specific order. Here is a detailed example.

    df <- data.frame(Groups = c("B","B","B","C","C","A","A","A","A","A"), 
                     Ages = c(3,4,4,5,3,4,5,3,3,5))
    
    df_cast <- dcast(data = df, formula = Groups ~ Ages)    
    df_bars <- melt(data = df_cast, id.vars = 'Groups')
    
    ggplot(data = df_bars, aes( x = Groups, y = value, fill = variable ) ) + 
        geom_bar( stat = 'identity', position = 'dodge' ) + 
        labs(title="Groups ages", x = "Groups", y = "Frecuency") + 
        labs(fill = "Ages") + theme(plot.title = element_text(hjust = 0.5))
    

    The groups are B, C and A, and I want them to appear in that order in the bar-chart, the above command arrange them in alphabetic order.