2017-10-17 13 views
0

J'ai fait un barplot dans ggplot, mais, pour des raisons purement esthétiques, je veux changer l'ordre des catégories Legend. Voici mon script:Modifier la légende commander ggplot bar

library(ggplot2) 
df <- data.frame(Month = c(4, 5, 6, 7, 8, 9, 10, 11), 
       variable = rep(c("Outlier", "NOutlier"), 4), 
       value = c(8, 9, 10, 5, 12, 13, 9, 10)) 

hist_overall <- ggplot(df, aes(x = Month, y = value, fill = variable)) + 
    geom_bar(stat = "identity") + 
    scale_fill_manual("Legenda", values = c("Outlier" = "#1260AB", "NOutlier" = "#009BFF")) 
hist_overall 

plot Je ne veux rien faire avec les données, je veux juste changer l'ordre légende, de sorte que la catégorie darkblue « Outlier » est représenté au-dessus de la catégorie lightblue 'NOutlier'.

Quelqu'un sait d'un moyen rapide pour moi de faire cela?

Répondre

1

La modification suivante à df devrait faire ce que vous voulez. Nous définissons variable comme un facteur et définissons manuellement le facteur levels en les triant de la manière souhaitée.

df <- data.frame(Month = c(4, 5, 6, 7, 8, 9, 10, 11), 
      variable = factor(rep(c("Outlier", "NOutlier"), 4), 
      levels=(rev(levels(factor(c("Outlier", "NOutlier")))))), 
      value = c(8, 9, 10, 5, 12, 13, 9, 10)) 

hist_overall <- ggplot(df, aes(x = Month, y = value, fill = variable)) + 
geom_bar(stat = "identity") + 
scale_fill_manual("Legenda", values = c("Outlier" = "#1260AB", "NOutlier" = "#009BFF")) 

enter image description here

Vous pouvez réutiliser votre définition de df

df <- data.frame(Month = c(4, 5, 6, 7, 8, 9, 10, 11), 
     variable = rep(c("Outlier", "NOutlier"), 4), 
     value = c(8, 9, 10, 5, 12, 13, 9, 10)) 

et définir les niveaux et leur ordre de la manière suivante

levels(df$variable) <- c("Outlier", "NOutlier") 

Voir aussi à ce link abou t changer l'ordre des étiquettes de légende.