I am plotting three Pearson Type IV distributions. It looks like I have to plot the distribution with the highest value of y and then use lines() to add the two distributions that are shorter / have lower max values of y. The following code figures out which distribution has the max y value, plots it first and then uses lines for the other two distributions with a series of three if statements. This works. I run R from a batch file that reads the following in a text file. I want to graph dozens of distributions and I am looking for a more elegant way to do this. New to R, experienced C programmer, thanks in advance. Frank
colors <- c("red", "blue", "darkgreen", "gold", "black") labels <- c("1", "2","3") pdf("C:\\Users\\Frank\\Documents\\R\\Scripts\\pt4_Graph.pdf") ## load Pearson package library(PearsonDS) ##range for x axis no_of_increments<- 100 x <- seq(-0.06, +0.06, length=no_of_increments) ##parameters for the plots of three distributions mx<- c(1.95, 18.35,1.93) nux<- c(0.08,-1.02,0.25) locationx<- c(0.0048,-0.00254,0.00189) scalex<- c(0.0115,0.082187,0.026675) ## calculate probability density function hx1<- dpearsonIV(x,m=mx[1],nu=nux[1],location=locationx[1],scale=scalex[1]) hx2<- dpearsonIV(x,m=mx[2],nu=nux[2],location=locationx[2],scale=scalex[2]) hx3<- dpearsonIV(x,m=mx[3],nu=nux[3],location=locationx[3],scale=scalex[3]) ##calculate max of each distribtion maxhx1<- max(hx1) maxhx2<- max(hx2) maxhx3<- max(hx3) maxhx<- max(hx1,hx2,hx3) maxhx1 maxhx2 maxhx3 maxhx if (maxhx1==maxhx) {plot(x, hx1 , type="l", lwd=2, col=colors[1], xlab="x value", ylab="Density", main="pt4") for (i in 2:3){ lines(x, dpearsonIV(x,m=mx[i],nu=nux[i],location=locationx[i],scale=scalex[i]), lwd=2, col=colors[i])} legend("topright", inset=.05, title="Distributions", labels, lwd=2, lty=c(1, 1, 1, 1, 2), col=colors) grid() } if (maxhx2==maxhx) {plot(x, hx2 , type="l", lwd=2, xlab="x value", ylab="Density", main="SPX", col=colors[2]) { lines(x, dpearsonIV(x,m=mx[1],nu=nux[1],location=locationx[1],scale=scalex[1]), lwd=2, col=colors[1]) lines(x, dpearsonIV(x,m=mx[3],nu=nux[3],location=locationx[3],scale=scalex[3]), lwd=2, col=colors[3]) legend("topright", inset=.05, title="Distributions", labels, lwd=2, lty=c(1, 1, 1, 1, 2), col=colors) grid() } if (maxhx3==maxhx) {plot(x, hx3 , type="l", lwd=2, col=colors[3], xlab="x value", ylab="Density", main="SPX") for (i in 1:2){ lines(x, dpearsonIV(x,m=mx[i],nu=nux[i],location=locationx[i],scale=scalex[i]), lwd=2, col=colors[i])} legend("topright", inset=.05, title="Distributions", labels, lwd=2, lty=c(1, 1, 1, 1, 2), col=colors) grid() } ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.