############################################## # 21/12/05 Karoline Faust # task: Script plots filled area at the given intervall # Input: x.axis # numeric vector x (should have same length as x.axis) # interval (by default min and max value of given x.axis) # main = string for title # col = color of filled area or if density larger 0 of lines filling the area # border = color of border around area # angle = angle of lines that fill area (if density larger 0) # density = area is filled with lines of given density (the higher density, the more lines) # lty = line type (2,4,6 or 8), 2 gives dotted lines plotArea <- function(x.axis, x, interval = c(min(x.axis),max(x.axis)),main = "",col = "red",border = NULL,angle = 45,density = NULL,lty = NULL){ #find indices that belong to the indicated interval get_interval = c() for (i in 1:length(x.axis)){ if(x.axis[i] == interval[1]) { get_interval = c(get_interval, i) } else if (x.axis[i] == interval[2]){ get_interval = c(get_interval, i) } } plot(x.axis,x,type = "l",xlab = "x",ylab="y", main = main) xx=c(x.axis[get_interval[1]:get_interval[2]],rev(x.axis[get_interval[1]:get_interval[2]])) yy=c(x[get_interval[1]:get_interval[2]],rep(0,length(x[get_interval[1]:get_interval[2]]))) polygon(xx,yy,col=col,density = density,angle = angle,border = border, lty = lty) } #################################################### # task: provide x.axis of given range and given stepwidth # makeX<-function(range=c(0,100),steps = 100 ){ x.width = sum(abs(range)) x = seq(range[1],range[2],(x.width/steps)) x = x[1:steps] x }