我需要在ggplot2中用概率区间绘制一些离散预测,但我遇到了一些问题。
我有以下data.frame
city pred min.80 max.80
BH 100 50 150
RJ 120 80 140
SP 90 80 100
我想要一个y轴上城市的图和x轴上的预测值。对于y的每个离散值,应该有一个水平条,其范围是min.80和max.80值。我的想法是使用geom_rect
中的ggplot2
来执行此操作。
我已经尝试了以下代码,但问题是我将离散变量转换为连续变量以便绘制它,并且我在标签上丢失了它们的值。
> ggplot(df) + geom_rect(aes(xmin=min.80, xmax=max.80, ymin=as.numeric(city)-0.4,
+ ymax=as.numeric(city)+0.4))
还有其他办法吗?
答案 0 :(得分:4)
我建议你使用geom pointrange
或crossbar
:
ggplot(df, aes(x=city)) +
geom_pointrange(aes(ymin=min.80, ymax=max.80, y=pred)) +
coord_flip()
ggplot(df, aes(x=city)) +
geom_crossbar(aes(ymin=min.80, ymax=max.80, y=pred)) +
coord_flip()
答案 1 :(得分:0)
我认为您希望将y轴保持为一个因子(y=city
)。这种(估计+间隔)数据可能最好用geom_pointrange
之类的东西完成。毕竟,矩形的“高度”没有解释。
如果您必须将错误栏设置为水平,我之前已经通过两种方式完成了此操作:
coord_flip()
coord_flip()
时,它有点受限,所以我有时也会通过将geom_pointrange()
与geom_hline()
相结合来重新创建geom_point()
功能。