A l'occasion de la création de graphique avec ggplot, J'essaie d'affecter une couleur unique à un type qui sera sélectionné selon l'itération d'une boucle.
Le Df :
Code : Tout sélectionner
structure(list(Unité = c("Autres", "Autres", "Autres", "Autres",
"Autres", "Autres", "Autres", "Autres", "Autres", "Autres", "Autres",
"Autres", "Autres", "Autres", "Autres", "Autres", "Autres", "Autres",
"Autres", "Autres", "Autres", "Autres", "Autres", "Autres", "Autres",
"Autres", "Autres", "Autres", "Autres", "Autres"), Catégorie.de.l.animal = c("Poissons",
"Insecte, crustacés d'eau douce", "Poissons", "Poissons", "Poissons",
"Viande sauvage", "Poissons", "Poissons", "Poissons", "Poissons",
"Poissons", "Poissons", "Poissons", "Viande sauvage", "Poissons",
"Poissons", "Poissons", "Poissons", "Viande sauvage", "Poissons",
"Poissons", "Poissons", "Poissons", "Viande sauvage", "Viande sauvage",
"Viande sauvage", "Viande sauvage", "Poissons", "Viande sauvage",
"Viande sauvage"), Condition = c("Fumé", "Fumé", "Fumé", "Fumé",
"Fumé", "Frais", "Fumé", "Fumé", "Fumé", "Fumé", "Fumé",
"Fumé", "Fumé", "Fumé", "Fumé", "Vivant", "Fumé", "Vivant",
"Fumé", "Fumé", "Frais", "Frais", "Fumé", "Frais", "Frais",
"Fumé", "Fumé", "Salé", "Fumé", "Frais"), Prix.d.une.unité = c(25000L,
100L, 10000L, 10000L, 40000L, 500L, 15000L, 2000L, 1000L, 2000L,
1000L, 500L, 5000L, 500L, 35000L, 28000L, 2000L, 30000L, 500L,
3000L, 500L, 500L, 5000L, 500L, 500L, 500L, 250L, 2500L, 250L,
500L)), row.names = c(NA, 30L), class = "data.frame")
Les couleurs selon la modalité :
Code : Tout sélectionner
col=c("#00B479","#69BDDD", "#E37C3E","#FCC524","#7f00ff", "#3399ff","#000000")
col2<-c("Entier","Moitié","Pile","Pièce","Kg","Quartier","Autres")
colB<-cbind(col,col2)
Et le code résumant le df + cherchant la création du graphique via ggplot
Code : Tout sélectionner
for (i in unique(sale$Catégorie.de.l.animal)) {
sub<-subset(sale, Catégorie.de.l.animal == i ) # je créé un sub à chaque itération du i
res<-aggregate(list(prixMean=sub$Prix.d.une.unité),
list(condition=sub$Condition, unité=sub$Unité),
mean, na.rm=T) # J'effectue mon résumé statistique voulu
res$unité <- with(res, reorder(unité,-prixMean)) # que je réordonne en décroissant
res<-merge(res,colB, by.x="unité", by.y="col2", all.X=T) # je join les couleurs dans le df qui sera plotté
x11()
p<-ggplot(res, aes(unité, prixMean, fill=condition)) +
geom_bar(stat="identity",position=position_dodge(0.5),width = 0.7) +
scale_fill_discrete(res$col) + ## Fonction ne fonctionnant pas
xlab("Type d'unité") +
ylab("Prix moyen par type d'unité") +
theme(axis.title.x = element_text(color="red", size=20, face="bold")) +
ggtitle(i)+
theme_classic()
print(p)
}
Je n'arrive pas à rendre standard la sélection de la couleur avec la sélection du facteur unité. Elles alternent selon les "unités" sélectionnées dans le sub (logique). J'aimerai par exemple que "fumé" soit rouge, "frais" soit bleu, etc.. sur les 5 graphiques produits.
Il me manque juste la petite logique (ou fonction) ggplot pour lui passer la bonne commande, mais laquelle ?
D'avance merci pour votre aide,
Cordialement,
Samuel