2010-06-30 17 views
6

Applico un modello di conteggio a un vettore di dati effettivi e vorrei ora tracciare il grafico a barre attuale e quello previsto come grafico a barre raggruppato (schivato). Poiché questo è un modello di conteggio, i dati sono discreti (X = x da 0 a 317). Dal momento che sto montando un modello, ho solo dati già tabulati per i valori previsti.Grafico a barre raggruppato con ggplot2 e dati già tabulati

Ecco come il mio telaio originale di dati appare:

actual predicted 
1 3236 3570.4995 
2 1968 1137.1202 
3 707 641.8186 
4 302 414.8763 
5 185 285.1854 
6 104 203.0502 

ho trasformato i dati da tracciare con ggplot2:

melted.data <- melt(plot.data) 
melted.data$realization <- c(rep(0:317, times=2)) 
colnames(melted.data)=c('origin','count','realization') 

Così che il mio frame di dati ora assomiglia a questo:

head(melted.data) 
    origin count realization 
1 actual 3236   0 
2 actual 1968   1 
3 actual 707   2 
4 actual 302   3 
5 actual 185   4 
6 actual 104   5 
> tail(melted.data) 
     origin  count realization 
631 predicted 1.564673e-27   312 
632 predicted 1.265509e-27   313 
633 predicted 1.023552e-27   314 
634 predicted 8.278601e-28   315 
635 predicted 6.695866e-28   316 
636 predicted 5.415757e-28   317 

Quando provo a tracciare il grafico (ancora, mi piacerebbe avere il conteggio effettivo e previsto - che è già scheda ulated nel data-- dalla realizzazione discreta), io do questo comando:

ggplot(melted.data, stat="identity", aes(x=realization, fill=origin)) + geom_bar(position="dodge") 

Eppure sembra che il parametro stat non è stato utile a ggplot2, come non ho ricevuto la giusta altezza bar (che sarebbe quelli della variabile "contare").

Qualche idea?

Grazie,

Roberto.

risposta

7

È necessario il valore y nel mapping aes se si utilizza stat_identity (colonna count). Provare quanto segue:

ggplot(melted.data, aes(x=realization, y=count, fill=origin)) + 
     stat_identity(position="dodge", geom="bar") 

o

ggplot(melted.data, aes(x=realization, y=count, fill=origin)) + 
     geom_bar(position="dodge", stat="identity") 
+0

Sì, basta aggiungere '+ XLIM (Xmin, Xmax)' (con valori appropriati per xmin e xmax) – rcs

+0

Grande, grazie mille! – Roberto

+0

@rcs: Grazie per questa risposta. Usando la notazione variabile di cui sopra, i dati che sto tracciando hanno numeri variabili di valori di "origine". Quando un solo valore 'origin' è presente a un' achievement', allora viene prodotta una barra "fat". Quando sono presenti due valori di "origine", vengono prodotte due barre più strette, ecc. Esiste un modo per garantire che le barre abbiano una larghezza uniforme? – SabreWolfy

Problemi correlati