graphShade <- function(x,y, col.line, breaks, shade=TRUE, col.shade=col.line, ... ) { # Initialize nb = length(breaks) plot(x,y, type="n", ...) # Plot the lines part = which(x<=breaks[1]) lines(x[part],y[part], col=col.line[1]) for(i in 2:nb) { part = which(x<=breaks[i] & x>breaks[i-1]) lines(x[part],y[part], col=col.line[i]) } part = which(x>breaks[nb]) lines(x[part],y[part], col=col.line[nb+1]) if(shade) { # Shade the areas ? part = which(x<=breaks[1]) polyx = c(x[part],rev(x[part])) polyy = c(y[part],rep(0,length(part))) polygon(polyx,polyy,col=col.shade[1],border=col.line[1]) for(i in 2:nb) { part = which(x<=breaks[i] & x>breaks[i-1]) polyx = c(x[part],rev(x[part])) polyy = c(y[part],rep(0,length(part))) polygon(polyx,polyy,col=col.shade[i],border=col.line[i]) } part = which(x>breaks[nb]) polyx = c(x[part],rev(x[part])) polyy = c(y[part],rep(0,length(part))) polygon(polyx,polyy,col=col.shade[nb+1],border=col.line[nb+1]) } }