R中逐步函数之间的区域
area between step-wise functions in R
我想绘制两个逐步函数之间的区域。
我试过 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))
感谢任何帮助。
一个简单的解决方法是将您的 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))
产生:
我想绘制两个逐步函数之间的区域。
我试过 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))
感谢任何帮助。
一个简单的解决方法是将您的 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))
产生: