ggplot2 e un grafico a barre in pila con valori negativi

Dato il seguente set di dati:

Division Year OperatingIncome 1 A 2012 11460 2 B 2012 7431 3 C 2012 -8121 4 D 2012 15719 5 E 2012 364 6 A 2011 12211 7 B 2011 6290 8 C 2011 -2657 9 D 2011 14657 10 E 2011 1257 11 A 2010 12895 12 B 2010 5381 13 C 2010 -2408 14 D 2010 11849 15 E 2010 517 

Come faccio a completare un grafico a barre in pila in ggplot2 che include i valori negativi? Ecco la sequenza di grafici di base che sto utilizzando:

 ggplot(income_m, aes(x=Year, y=OperatingIncome, fill=Division)) + geom_bar() + + scale_fill_brewer(type = "seq", palette = 1) 

Questo restituisce un errore:

Messaggio di avviso: impilamento non ben definito quando ymin! = 0

E invece del risultato atteso – i valori negativi vengono visualizzati sotto l’asse X – semplicemente non sono presenti nel grafico a barre in pila. C’è un modo per produrre il grafico con tutti i valori, sia positivi che negativi, contabilizzati?

Aggiornamento : A partire da ggplot2 2.2.0, l’impilamento per i valori negativi viene gestito automaticamente, senza dover creare livelli separati per i valori positivi e negativi.

Se capisco cosa stai cercando, il trucco è mettere i due dati positivi e negativi in ​​livelli separati, e anche usare stat = "identity" :

 dat < - read.table(text = " Division Year OperatingIncome 1 A 2012 11460 2 B 2012 7431 3 C 2012 -8121 4 D 2012 15719 5 E 2012 364 6 A 2011 12211 7 B 2011 6290 8 C 2011 -2657 9 D 2011 14657 10 E 2011 1257 11 A 2010 12895 12 B 2010 5381 13 C 2010 -2408 14 D 2010 11849 15 E 2010 517",header = TRUE,sep = "",row.names = 1) dat1 <- subset(dat,OperatingIncome >= 0) dat2 < - subset(dat,OperatingIncome < 0) ggplot() + geom_bar(data = dat1, aes(x=Year, y=OperatingIncome, fill=Division),stat = "identity") + geom_bar(data = dat2, aes(x=Year, y=OperatingIncome, fill=Division),stat = "identity") + scale_fill_brewer(type = "seq", palette = 1) 

inserisci la descrizione dell'immagine qui