[Résolu] Ggplot et scale_fill_manual

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Anais Payen
Messages : 60
Enregistré le : 25 Fév 2019, 08:50

[Résolu] Ggplot et scale_fill_manual

Messagepar Anais Payen » 02 Déc 2020, 11:33

Bonjour à tous,

Je rencontre un petit problème lors de l'utilisation de ggplot2 pour faire un barplot avec des données NA.
Je vous donne un exemple de code :

Code : Tout sélectionner

df <- data.frame(c(1:30), c(1,3,2,4,NA,NA,3,2,4,1,NA,2,1,3,4,1,2,3,4,NA,1,1,3,3,4,NA,NA,1,1,3))
names(df)<- c("id", "categorie")
df$categorie <- as.factor(df$categorie)

dfplot<-ggplot2::ggplot(df,aes(categorie, fill=categorie))+
  geom_bar(stat = "count")

dfplot

Dans ce 1er cas, tout va bien, chaque catégorie est représentée.

Sauf que lorsque je souhaite changer la couleur des barplots et que j’utilise la fonction scale_fill_manual, alors la catégorie NA n'est plus représentée sur le graphique.

Voici le code :

Code : Tout sélectionner

dfplot<-ggplot2::ggplot(df,aes(categorie, fill=categorie))+
  geom_bar(stat = "count")+
  scale_fill_manual(values = c("cadetblue1", "lightblue4","deepskyblue", "blue4","grey"))
dfplot

Est ce que l'un d'entre vous a déjà rencontré le même problème ou pourrait m'éclairer sur la raison ?

Merci d'avance et bonne journée

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: Ggplot et scale_fill_manual

Messagepar Mickael Canouil » 02 Déc 2020, 11:52

Bonjour,

Par définition NA n'est pas une catégorie.
Il serait plus judicieux de rendre les NA explicites, par exemple en remplaçant leur valeur dans le ggplot par "Missing".
Dans le cas contraire, les NAs sont gérés comme tels et donc pas de la même façon que le reste des données.

Code : Tout sélectionner

df <- data.frame(
  id = c(1:30), 
  categorie 
= factor(c(1, 3, 2, 4, NA, NA, 3, 2, 4, 1, NA, 2, 1, 3, 4, 1, 2, 3, 4, NA, 1, 1, 3, 3, 4, NA, NA, 1, 1, 3))
)
library(ggplot2)
dfplot <- ggplot(df, aes(categorie, fill = categorie)) +
  geom_bar(stat = "count")

dfplot

Image

Code : Tout sélectionner

dfplot +
  scale_fill_manual(
    values = c("cadetblue1", "lightblue4", "deepskyblue", "blue4"), 
    na
.value = "grey50" # default value for default scales fill/colour
  

Image

Cordialement,
Mickaël
mickael.canouil.fr | rlille.fr

Anais Payen
Messages : 60
Enregistré le : 25 Fév 2019, 08:50

Re: Ggplot et scale_fill_manual

Messagepar Anais Payen » 02 Déc 2020, 11:54

Et voilà un problème résolu en quelques minutes!

Merci pour votre aide !


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité

cron