2010-06-30 6 views
6

J'ajuste un modèle de comptage à un vecteur de données réelles et j'aimerais maintenant tracer le diagramme à barres groupé (esquivé) actuel et prévu. Comme il s'agit d'un modèle de comptage, les données sont discrètes (X = x de 0 à 317). Comme je suis en train d'ajuster un modèle, je n'ai que des données déjà tabulées pour les valeurs prédites.Diagramme à barres groupées avec ggplot2 et données déjà tabulées

Voici comment mon trame de données d'origine semble:

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 

Je transforme les données à tracer avec ggplot2:

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

Alors que mon trame de données ressemble maintenant à ceci:

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 

Lorsque j'essaie de le représenter graphiquement (encore une fois, je voudrais avoir le nombre réel et prévu - qui est déjà tab menté dans la data-- par la réalisation discrète), je donne cette commande:

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

Pourtant, il semble que le paramètre stat n'est pas aimé par ggplot2, comme je ne suis pas la hauteur de la barre correcte (ce qui serait ceux de la variable "count").

Des idées?

Merci,

Roberto.

Répondre

7

Vous avez besoin de valeurs y dans le mappage aes si vous utilisez stat_identity (colonne count). Effectuez les opérations suivantes:

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

ou

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

Oui, ajoutez '+ XLIM (xmin, xmax)' (avec des valeurs appropriées pour Xmin et Xmax) – rcs

+0

Grand, merci beaucoup! – Roberto

+0

@rcs: Merci pour cette réponse. En utilisant la notation de variable ci-dessus, les données que je suis en train de tracer ont des nombres variables de valeurs 'origin'. Quand une seule valeur "origine" est présente à une "réalisation", alors une barre "grasse" est produite. Lorsque deux valeurs 'origin' sont présentes, deux barres plus étroites sont produites, etc. Y at-il un moyen de s'assurer que les barres ont une largeur uniforme? – SabreWolfy

Questions connexes