2012-06-25 38 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()功能。