Tengo un dataframe df.all
y lo estoy trazando en un diagrama de barras con ggplot2 usando el siguiente código. Me gustaría hacerlo de modo que el orden de las barras esquivas sea invertido. Es decir, de modo que las barras con la etiqueta "Singular" aparecen delante de las barras con la etiqueta "Plural".Cambiando el orden de las barras esquivas en la barra de barras ggplot2
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"))
He intentado hacer levels(df.all$number) = c("S", "P")
pensando que tal vez ggplot utiliza el orden de los niveles de decidir para el trazado, pero que no funcionó. No estoy seguro de qué más probar. ¿Algunas ideas?
El contenido de df.all
, en caso de que sea útil:
> 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 ...
Creo que esto es un error en ggplot2 - debe respetar el orden de los datos (o el orden estético) al esquivar las barras, pero creo que no. Difícil de decir sin un ejemplo reproducible. – hadley
Hadley, ¿puedo enviarle algunos datos y códigos? Soy muy bueno para reproducir este error :) – pealco