2

嗨,我得到了一个weekly.mean.values具有以下结构的数据框:

week:mean:ci.lower:ci.upper

周是一个因素;意思是,ci.lower 和 ci.upper 是数字。对于每一周,只有一个平均值和一个 ci.lower 或 ci.upper。

我试图在平均值周围的 95% 置信区间内绘制一个阴影区域,代码如下:

ggplot(weekly.mean.values,aes(x=week,y=mean)) + 
    geom_line() + 
    geom_ribbon(aes(ymin=ci.lower,ymax=ci.upper))

然而,该图显示为空白(仅存在 x 轴和 y 轴,但没有线或点,更不用说阴影区域了)。

如果我删除了 geom_ribbon 部分,我确实得到了一条线。我知道这应该是一个非常简单的任务,但我不知道为什么我不能让 geom_ribbon 绘制我想要的东西。任何提示将不胜感激。

4

3 回答 3

2

我意识到这个线程是超级旧的,但谷歌仍然找到它。

答案是你需要设置yminymax使用你正在使用的部分数据y-axis。如果您将它们设置为标量值,那么功能区会从上到下覆盖整个绘图。

您可以使用

ymin=0 
ymax=mean

从0到你y-point甚至

ymin=mean-1
ymax=mean+1

让色带覆盖一条包含您的实际数据的条带。

于 2013-06-11T13:32:41.653 回答
1

我可能遗漏了一些东西,但grey20默认情况下,功能区将被填充填充。您将这一层绘制在数据之上,所以难怪它会掩盖它。此外,从提供给初始调用的数据导出的绘图轴的限制也可能ggplot()不足以包含置信区间功能区。在这种情况下,看到灰色/空白图我不会感到惊讶。

要查看这是否是问题所在,请尝试将您的geom_ribbon()线路更改为:

geom_ribbon(aes(ymin=ci.lower,ymax=ci.upper), alpha = 0.5)

如果问题是我认为的问题,它将绘制具有透明度的功能区,它应该在下面显示数据。

如果是这样,请将 x 和 y 限制设置为数据范围 +/- 您希望绘制的置信区间并交换图层的顺序(即在功能区顶部绘制线条),并在功能区中使用透明度通过它显示网格。

于 2012-05-26T08:37:13.490 回答
1

来自ggplot 的( geom_ribbon2.1.0) 文档:

对于每个连续的 x 值,geom_interval显示一个间隔。geom_area是 的一个特例geom_ribbon,其中范围的最小值固定为 0。

在这种情况下,x 值不能成为 的因子geom_ribbon。一种解决方案是将week因子转换为数字。例如

ggplot(weekly.mean.values,aes(x=as.numeric(week),y=mean)) + 
  geom_line() + 
  geom_ribbon(aes(ymin=ci.lower,ymax=ci.upper))

geom_line尽管 X 轴刻度可能显示不同,但应该毫无意外地处理从因子到数字的切换。

于 2016-10-20T15:25:48.227 回答