【问题标题】:area between step-wise functions in RR中逐步函数之间的区域
【发布时间】:2017-04-24 11:55:16
【问题描述】:

我想在两个逐步函数之间绘制区域。

我尝试过geom_ribbon,但我通过插值而不是间隔恒定来获得平局。

comb = data.frame(time=rexp(20),n1=rep(1:10,each=2),n2=seq(from=2, to=11.5,by=0.5))
ggplot(comb) + geom_ribbon(aes(x=cumsum(time), ymin=n1, ymax=n2), fill="blue", alpha=.4) + geom_step(aes(x=cumsum(time), y=n1))+ geom_step(aes(x=cumsum(time), y=n2))

感谢任何帮助。

【问题讨论】:

  • 您能否通过提供几行数据来将其作为可重现性最低的示例?
  • 是的!对不起。我刚刚编辑过。

标签: r ggplot2 area


【解决方案1】:

一个简单的解决方法是将您的 cumsum(time) 移动到您的 comb 数据帧中:

comb$ctime <- cumsum(comb$time)

那么你可以使用geom_rect()如下:

ggplot() + 
  geom_rect(aes(xmin = ctime, xmax = lead(ctime), 
                ymin = n1, ymax = n2), 
            fill = "blue", alpha = 0.4) +
  geom_step(aes(x=ctime, y=n1))+ 
  geom_step(aes(x=ctime, y=n2))

产量:

【讨论】:

  • 这样就解决了问题。谢谢!。但是,当我运行它时,我会收到此警告消息,你知道为什么吗?> ggplot(comb) + 警告消息:删除了 1 行包含缺失值 (geom_rect)。
  • 当然,这是因为矩形是由四个角(xmin、xmax、ymin、ymax)定义的,在图的右侧,xmin 是ctime,但xmax 是NA,因为系列中没有下一个数字。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-01
相关资源
最近更新 更多