2010-03-11 9 views

Répondre

5

qplot(factor(cyl), data=mtcars, geom="bar", fill=factor(gear), order = -gear)

+0

Ceci donne 'Erreur dans eval (expr, envir, enclos): objet 'gear' non trouvé' –

5
qplot(factor(cyl), data=mtcars, geom='bar', fill=factor(gear, level=5:3)) 
+1

Vous l'avez compris, mais il est plus pratique de définir un nouveau 'data.frame', puis d'exécuter' qplot' sur 'transform()' ed, obtenant ainsi une légende propre et un axe: 'newone < - transform (mtcars, cyl = facteur (cyl), gear = facteur (engrenage, niveaux = 5: 3)) 'Then:' qplot (cyl, data = newone, fill = engrenage) '... et le code est plus propre aussi! – aL3xa

1

Généraliser la solution (@ hadley de ne fonctionne pas dans le dernier ggplot) de @ xiechao, vous pouvez inverser l'ordre des facteurs pour y parvenir:

library(ggplot2) 
data(mtcars) 
mtcars$gear <- factor(mtcars$gear) # First make factor with default levels 
mtcars$gear <- factor(mtcars$gear, levels=rev(levels(mtcars$gear))) 
qplot(cyl, data=mtcars, geom="bar", fill=gear) 
# Or with ggplot 
ggplot(mtcars, aes(factor(cyl), fill=gear)) + geom_bar() 

enter image description here