2010-03-11 12 views

risposta

5

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

+0

Questo dà 'Errore in eval (expr, envir, enclos): oggetto 'gear' non trovato' –

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

Hai capito, ma è più comodo definire nuovo 'data.frame' e quindi eseguire' qplot' su 'transform()' ed uno, quindi ottenere una legenda e un asse puliti: 'newone < - transform (mtcars, cyl = factor (cyl), gear = factor (gear, levels = 5: 3)) 'Quindi:' qplot (cyl, data = newone, fill = gear) '... e il codice è più pulito pure! – aL3xa

1

a generalizzare la soluzione @ di xiechao (@ Hadley del non funziona in ultima ggplot), è possibile invertire l'ordine dei fattori per raggiungere questo obiettivo:

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

Problemi correlati