sto chiamando la funzione ggplotCome si ordina il fill-colori all'interno ggplot2 geom_bar
ggplot(data,aes(x,y,fill=category)+geom_bar(stat="identity")
Il risultato è un barplot con barre piene da vari colori corrispondenti alla categoria. Tuttavia, l'ordine dei colori non è coerente da barra a barra. Diciamo che c'è rosa, verde e blu. Alcune barre diventano rosa, verde, blu dal basso verso l'alto e alcune diventano verdi, rosa, blu. Non vedo alcun modello ovvio.
Come vengono scelti questi ordini? Come posso cambiarlo? Per lo meno, come posso fare in modo che ggplot scelga un ordinamento coerente?
La classe di (x, y e categoria) sono rispettivamente (numero intero, numerico e fattore). Se faccio della categoria un fattore ordinato, non cambia questo comportamento.
Qualcuno sa come risolvere questo problema?
esempio riproducibile:
dput(data)
structure(list(mon = c(9L, 10L, 11L, 10L, 8L, 7L, 7L, 11L, 9L,
10L, 12L, 11L, 7L, 12L, 8L, 12L, 9L, 7L, 9L, 10L, 10L, 8L, 12L,
7L, 11L, 10L, 8L, 7L, 11L, 12L, 12L, 9L, 9L, 7L, 7L, 12L, 12L,
9L, 9L, 8L), gclass = structure(c(9L, 1L, 8L, 6L, 4L, 4L, 3L,
6L, 2L, 4L, 1L, 1L, 5L, 7L, 1L, 6L, 8L, 6L, 4L, 7L, 8L, 7L, 9L,
8L, 3L, 5L, 9L, 2L, 7L, 3L, 5L, 5L, 7L, 7L, 9L, 2L, 4L, 1L, 3L,
8L), .Label = c("Down-Down", "Down-Stable", "Down-Up", "Stable-Down",
"Stable-Stable", "Stable-Up", "Up-Down", "Up-Stable", "Up-Up"
), class = c("ordered", "factor")), NG = c(222614.67, 9998.17,
351162.2, 37357.95, 4140.48, 1878.57, 553.86, 40012.25, 766.52,
15733.36, 90676.2, 45000.29, 0, 375699.84, 2424.21, 93094.21,
120547.69, 291.33, 1536.38, 167352.21, 160347.01, 26851.47, 725689.06,
4500.55, 10644.54, 75132.98, 42676.41, 267.65, 392277.64, 33854.26,
384754.67, 7195.93, 88974.2, 20665.79, 7185.69, 45059.64, 60576.96,
3564.53, 1262.39, 9394.15)), .Names = c("mon", "gclass", "NG"
), row.names = c(NA, -40L), class = "data.frame")
ggplot(data,aes(mon,NG,fill=gclass))+geom_bar(stat="identity")
esempio riproducibile per favore? –
BTW: Brian ha confermato per me che questo è in effetti un bug (un po 'vecchio). – joran
Attenzione lettore: questo comportamento è sfortunatamente cambiato più volte nella cronologia recente di ggplot2 e alcuni degli esempi nelle risposte non funzionano più. –