1

我需要在 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_rectfromggplot2来做这件事。

我尝试了以下代码,但问题是我将离散变量转换为连续变量以绘制它,并且我在标签上丢失了它们的值。

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

还有另一种方法吗?

4

2 回答 2

4

我建议你使用 geompointrangecrossbar

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()

在此处输入图像描述

于 2012-06-25T15:32:42.463 回答
0

我认为您希望将 y 轴作为一个因素 ( y=city)。这种(估计+间隔)数据可能最好用geom_pointrange. 毕竟,矩形的“高度”没有解释。

如果你必须让误差线是水平的,我之前已经通过两种方式做到了这一点:

  1. 使用coord_flip()
  2. 上次我尝试的时候,coord_flip()有点受限,所以我有时也geom_pointrange()通过结合geom_hline().geom_point()
于 2012-06-25T15:36:08.523 回答