2010-06-30 5 views
6

Ich passe ein Zählmodell an einen Vektor von tatsächlichen Daten an und möchte nun das tatsächliche und das vorhergesagte als ein gruppiertes (ausgewichenes) Balkendiagramm darstellen. Da dies ein Zählmodell ist, sind die Daten diskret (X = x von 0 bis 317). Da ich ein Modell anpasse, habe ich nur Daten für die vorhergesagten Werte tabelliert.Gruppiertes Balkendiagramm mit ggplot2 und bereits tabellierten Daten

Hier ist, wie mein ursprünglicher Datenrahmen aussieht:

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 

ich die Daten transformierte mit ggplot2 aufgetragen werden:

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

Damit mein Datenrahmen sieht nun wie folgt aus:

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 

Wenn ich versuche, es zu grafisch darzustellen (ich hätte auch gerne die tatsächliche und vorhergesagte Anzahl - die bereits Tab ist ulated im data-- durch diskrete Realisierung), gebe ich diesen Befehl ein:

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

Doch scheint es, wie die Statistik Parameter von ggplot2 nicht gemocht wird, da ich nicht die richtige Barhöhe bekommen (was wäre, diejenigen der Variablen "count").

Irgendwelche Ideen?

Danke,

Roberto.

Antwort

7

Sie benötigen Y-Werte in der aes Zuordnung, wenn Sie stat_identity (Spalte count) verwenden. Versuchen Sie Folgendes:

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

oder

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

Ja, fügen Sie einfach '+ Xlim (xmin, xmax)' (mit entsprechenden Werte für xmin und xmax) – rcs

+0

Große, vielen Dank! – Roberto

+0

@rcs: Danke für diese Antwort. Unter Verwendung der obigen Variablenschreibweise haben die Daten, die ich zeichne, unterschiedliche Zahlen von Ursprungswerten. Wenn nur ein "Ursprungs" -Wert bei einer "Realisierung" vorhanden ist, wird ein "fetter" Balken erzeugt. Wenn zwei Ursprungswerte vorhanden sind, werden zwei schmalere Balken usw. erzeugt. Gibt es eine Möglichkeit sicherzustellen, dass die Balken eine einheitliche Breite haben? – SabreWolfy

Verwandte Themen