[英]How can I fill under a line that I plotted with type='s'
I would like to fill the area under a step function line I ploted using plot(X, type='s')
I tried polygon
with no success. 我想填充使用plot(X, type='s')
绘制的阶梯函数线下的区域。我尝试了polygon
没有成功。
set.seed(1);y = abs(rnorm(10))
plot(y,ylim=c(0,max(y)), type="p",pch=24)
lines(y, type='s')
abline(h=0)
Say I want to paint in gray under the curve and above y=0
假设我想在曲线下方以灰色绘制并且在y=0
之上
x <- seq_along(y)
y2 <- rep(y, each=2)
y2 <- y2[-length(y2)]
x2 <- rep(x, each=2)[-1]
x3 <- c(min(x2), x2, max(x2))
y3 <- c(0, y2, 0)
# because polygon() is dumb and wants a pre-existing plot
plot(x, y, ylim=c(0, max(y)), type="n")
polygon(x3, y3, border=NA, col="grey")
lines(x2, y2)
a Lattice
solution which is basic an adaptation of excellent HongOoi solution. 一个Lattice
解决方案,它是一个基本适应优秀的HongOoi解决方案。
set.seed(1)
xx <- c(1:10)
yy <- abs(rnorm(10))
library(lattice)
xyplot(yy~xx,type='s',
panel=function(x,y,...){
panel.xyplot(x,y,...)
y2 <- rep(y, each=2)
y2 <- y2[-length(y2)]
x2 <- rep(x, each=2)[-1]
x3 <- c(min(x2), x2, max(x2))
y3 <- c(0, y2, 0)
panel.polygon(x3, y3,col=rgb(1, 0, 0,0.5), border=NA)
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.