Guida rapida creazione di un grafico a barre in pila (ggplot2)

Ho i seguenti dati telaio:

> DF

Year Metric MWh

2003 Demand 498343

2004 Demand 1250904

2005 Demand 1665176

2006 Demand 2317643

2007 Demand 2455311

2008 Demand 3557987

2009 Demand 4268125

2010 Demand 5403704

2011 Demand 6596158

2012 Demand 7814387

2013 Demand 9008863

2014 Demand 10291085

2015 Demand 11796549

2003 Actual 159677

2004 Actual 192748

2005 Actual 248844

2006 Actual 372661

2007 Actual 705656

2008 Actual 838721

2009 Actual 1188242

2010 Actual 1708979

2011 Actual 0

2012 Actual 0

2013 Actual 0

2014 Actual 0

2015 Actual 0

2003 High 0

2004 High 0

2005 High 0

2006 High 0

2007 High 0

2008 High 0

2009 High 0

2010 High 0

2011 High 3631730

2012 High 5729024

2013 High 6741785

2014 High 9342798

2015 High 11094798

2003 Low 0

2004 Low 0

2005 Low 0

2006 Low 0

2007 Low 0

2008 Low 0

2009 Low 0

2010 Low 0

2011 Low 1637220

2012 Low 1850615

2013 Low 2064011

2014 Low 2277406

2015 Low 2490801

Voglio creare un semplice grafico a barre in pila con:

— asse x: Anno

— y-asse: MWh

— 1 stack di Domanda, Alto, Basso, e Effettiva (‘Metrica’), in che ordine, impilati uno SOPRA l’altro (come accade per la-top). Finora, ho solo riuscito a capire come fare con i valori impilati l’uno SULL’altro:

DF$'Metric <- factor(DF$'Metric',levels=c("Demand","High","Low","Actual"))

qplot(x=Year,data=DF,geom="bar",weight=MWh,fill=Metric)

#OR

ggplot(DF,aes(x=factor(Year),y=MWh,fill=factor(Metric))) + geom_bar(position="stack")

Essenzialmente, quello che sto cercando è un unico bar all’anno in cui la “Domanda” è il valore più alto, e i valori più bassi (nell’ordine di cui sopra) sono impilati uno sull’. Credo che devo usare un position="fill" da qualche parte, ma non so dove metterlo. Fondamentalmente, quello che sto cercando di dimostrare è che la Domanda sarà in costante aumento, mentre l’Offerta (Effettivo e proiettata Bassa crescita vs proiettata ad Alta crescita) è stato in grado di soddisfare in modo molto semplice, grafica compatta. Se questo non è possibile, forse sarebbe meglio, semplicemente un gruppo di loro side-by-side?

Qualsiasi aiuto è molto apprezzato!! Grazie!!

Non ho tempo di controllare, ma si potrebbe essere alla ricerca per position="identity".
Grazie tanto!!! Questo è esattamente quello che stavo cercando!! Evviva!! ps, come faccio a bandiera la tua risposta con il segno di spunta?
Non è possibile accettare un commento. Ho scritto come risposta.

OriginaleL’autore Ray | 2011-01-26

2 Replies
  1. 17

    Io non sono sicuro di ciò che realmente vorrei trama, ma dal position="fill" ho l’impressione che si desidera tracciare le proporzioni relative di Metrica all’anno. Questo può essere fatto facilmente attraverso i seguenti.

    Il caricamento dei dati:

    DF <- dput(DF)
    structure(list(Year = c(2003L, 2004L, 2005L, 2006L, 2007L, 2008L, 
    2009L, 2010L, 2011L, 2012L, 2013L, 2014L, 2015L, 2003L, 2004L, 
    2005L, 2006L, 2007L, 2008L, 2009L, 2010L, 2011L, 2012L, 2013L, 
    2014L, 2015L, 2003L, 2004L, 2005L, 2006L, 2007L, 2008L, 2009L, 
    2010L, 2011L, 2012L, 2013L, 2014L, 2015L, 2003L, 2004L, 2005L, 
    2006L, 2007L, 2008L, 2009L, 2010L, 2011L, 2012L, 2013L, 2014L, 
    2015L), Metric = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
    4L, 4L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 
    3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("Demand", 
    "High", "Low", "Actual"), class = "factor"), MWh = c(498343L, 
    1250904L, 1665176L, 2317643L, 2455311L, 3557987L, 4268125L, 5403704L, 
    6596158L, 7814387L, 9008863L, 10291085L, 11796549L, 159677L, 
    192748L, 248844L, 372661L, 705656L, 838721L, 1188242L, 1708979L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 3631730L, 
    5729024L, 6741785L, 9342798L, 11094798L, 0L, 0L, 0L, 0L, 0L, 
    0L, 0L, 0L, 1637220L, 1850615L, 2064011L, 2277406L, 2490801L)), .Names = c("Year", 
    "Metric", "MWh"), row.names = c(NA, -52L), class = "data.frame")

    E tracciare il grafico a barre con la stessa altezza (con percentuali):

    ggplot(DF,aes(x=factor(Year),y=MWh,fill=factor(Metric))) + 
        geom_bar(position="fill")

    Guida rapida creazione di un grafico a barre in pila (ggplot2)

    Potrei frainteso quello che vuoi per la trama, e tracciando due distinte grafico la stessa immagine anche possibile specificare la griglia di layout. Mi consiglia di guardare gridextra pacchetto, soprattutto per arrange.

    OriginaleL’autore daroczig

  2. 4

    position="identity" non spostare le barre a tutti (in contrasto con il difetto di accatastamento), in modo che sarà sovrapposto. Hai bisogno di guardare fuori per l’ordinamento dei livelli di fattore, però, perché in questo modo le barre possono nascondersi dietro l’altra.

     ggplot(DF,aes(x=factor(Year),y=MWh,fill=factor(Metric))) + geom_bar(position="identity")
    questo funziona alla grande, ma se ci sono un sacco di date. C’è un modo per organizzare meglio la data in assey?

    OriginaleL’autore Aniko

Lascia un commento