J'ai un dataframe df.all
et je suis tracé dans un terrain de bar avec ggplot2 en utilisant le code ci-dessous. Je voudrais faire en sorte que l'ordre des barres esquivées soit inversé. C'est-à-dire, de sorte que les barres étiquetées "Singulier" viennent avant les barres étiquetées "Pluriel".Changer l'ordre des barres esquivé dans ggplot2 barplot
ggplot(df.all, aes(gram, V1, fill=number)) +
geom_bar(stat="identity", position="dodge") +
scale_x_discrete(labels=c("Grammatical","Ungrammatical")) +
scale_y_continuous(formatter="percent", limits=c(0,1)) +
facet_grid(. ~ experiment) +
scale_fill_hue("Attractor", breaks=c("S","P"), labels=c("Singular","Plural"))
J'ai essayé de faire levels(df.all$number) = c("S", "P")
penser que peut-être ggplot utilise l'ordre des niveaux de décider tracer l'ordre, mais cela ne fonctionne pas. Je ne suis pas sûr de quoi d'autre essayer. Des idées?
Le contenu de df.all
, dans le cas où il est utile:
> df.all
number gram experiment V1
1 S G BERIMBAU_AGR_A 0.8133333
2 S G BERIMBAU_AGR_B 0.8658537
3 S U BERIMBAU_AGR_A 0.5436242
4 S U BERIMBAU_AGR_B 0.4597701
5 P G BERIMBAU_AGR_A 0.8580645
6 P G BERIMBAU_AGR_B 0.8536585
7 P U BERIMBAU_AGR_A 0.3087248
8 P U BERIMBAU_AGR_B 0.3975904
> str(df.all)
'data.frame': 8 obs. of 4 variables:
$ number : Factor w/ 2 levels "S","P": 2 2 2 2 1 1 1 1
..- attr(*, "scores")= num [1:2(1d)] 0 -1
.. ..- attr(*, "dimnames")=List of 1
.. .. ..$ : chr "P" "S"
$ gram : Factor w/ 2 levels "G","U": 1 1 2 2 1 1 2 2
$ experiment: Factor w/ 4 levels "BERIMBAU_AGR_A",..: 1 4 1 4 1 4 1 4
$ V1 : num 0.813 0.866 0.544 0.46 0.858 ...
Je pense que c'est un bug dans ggplot2 - il devrait respecter l'ordre des données (ou l'ordre esthétique) en esquivant les barres mais je pense que non. Difficile à dire sans un exemple reproductible. – hadley
Hadley, puis-je vous envoyer des données et du code? Je suis très bon à reproduire cette erreur :) – pealco