2012-06-25 52 views
1

我需要在ggplot2中繪製一些具有概率間隔的離散預測,但我遇到了一些問題。用概率間隔繪製離散預測 - ggplot2

我有以下data.frame

city pred min.80 max.80 
BH  100  50  150 
RJ  120  80  140 
SP  90  80  100 

我想與y軸的城市,在x軸上的預測值的曲線圖。對於y的每個離散值,應該有一個水平條,其範圍爲最小值80和最大值80。我的想法是使用ggplot2geom_rect來做這件事。

我試過下面的代碼,但問題是我將離散變量轉換爲連續的以便繪製它,並且我在標籤上丟失了它們的值。

> ggplot(df) + geom_rect(aes(xmin=min.80, xmax=max.80, ymin=as.numeric(city)-0.4, 
+ ymax=as.numeric(city)+0.4)) 

有沒有另一種方法呢?

回答

4

我建議你使用GEOM pointrangecrossbar

ggplot(df, aes(x=city)) + 
    geom_pointrange(aes(ymin=min.80, ymax=max.80, y=pred)) + 
    coord_flip() 

enter image description here

ggplot(df, aes(x=city)) + 
    geom_crossbar(aes(ymin=min.80, ymax=max.80, y=pred)) + 
    coord_flip() 

enter image description here

+0

+1是的,這正是我的想法。僅供參考:我相信,'stat =「identity」'是兩者的默認值。 – joran

+0

@joran很好的接收,謝謝。我開始用'geom_bar'編寫一個解決方案,'stat =「identity」'是一個人造物...... – Andrie

0

我想你想保持y軸的一個因素(y=city)。這種(估計+間隔)數據可能更好地用geom_pointrange之類的東西來完成。畢竟,矩形的「高度」沒有解釋。

如果你必須有errorbars是水平的,我做這個之前在兩個方面:

  1. 使用coord_flip()
  2. 我最後一次嘗試coord_flip(),這是一個有點有限,所以我有時還通過組合geom_hline()geom_point()重新創建geom_pointrange()功能。