2010-06-30 41 views
6

我將計數模型擬合到實際數據的矢量中,現在想要將實際和預測繪製爲分組(閃避)條形圖。由於這是一個計數模型,因此數據是離散的(X = x從0到317)。由於我適合一個模型,所以我只有預測值的表格數據。ggplot2分組條形圖和已製表數據

這裏是我的原始數據幀的外觀:

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 

我改變了數據與GGPLOT2繪製:

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

使我的數據幀現在看起來是這樣的:

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 

當我嘗試繪製它(再次,我想有實際的和預測的計數 - 這已經是標籤ulated在離散實現了數據 - ),我給這個命令:

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

然而,這似乎是統計參數不受GGPLOT2喜歡,因爲我沒有得到正確的酒吧高度(這將是那些變量「count」)。

任何想法?

謝謝,

羅伯託。

回答

7

如果使用stat_identity(列count),則需要在aes映射中使用y值。請嘗試以下操作:

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

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

是,只需添加'+ XLIM(XMIN,XMAX)'(與XMIN XMAX和適當的值) – rcs 2010-06-30 21:13:52

+0

大,太感謝你了! – Roberto 2010-06-30 21:14:18

+0

@ rcs:謝謝你的回答。使用上面的變量符號,我繪製的數據具有不同數量的「原始」值。當「實現」中只有一個「原始」值時,則會產生一個「胖」條。當存在兩個「原始」值時,會生成兩個較窄的小節等。有沒有方法可以確保小節的寬度一致? – SabreWolfy 2012-06-17 15:03:38