# problems with plots in loop (corrected Email)

2 messages
Open this post in threaded view
|
Report Content as Inappropriate

## problems with plots in loop (corrected Email)

 Dear helpers,   In an attempt to use a loop to generate graphs in a for loop in run into a problem. The plan is to fill each page with eight graphs (mfrow = c(4,2)) in to two columns. Only the buttom graphs ( meaning every fourth graph) have  tick labels on the x  axis to preserve space. I used an if .... Else statement to achieve that.   The problem is that the first eight graphs are skipped when I run the loop, the other graphs are fine.  However, all graphs can be generated individually. This indicates that the data sets are fine.     Pulling the results from a nonlinear regression to more than 90 data sets from a list (resultslist[[i]]) Generating the first derivative and multiply it by 100 to adjust for the scale.   Here is the code.   pdf('F:/diffnormal_16001a.pdf') par(mfcol = c(4,2)) for(i in 1: 92){     fit  <-  NULL     der <-  NULL     Zeit  <- NULL     Zeit <- seq(0,300)     try(guess <- predict(resultslist_1600[[i]]) )     if(class(guess) == "try-error") {next}     fit <- smooth.spline(Zeit, guess)     der <- 100*(predict(fit, Zeit, deriv = 1))\$y   if((i/4)%%1 ==0){par(mar =c(4,4,0, 0) + 0.1)}   else{par(mar =c(0,4,0, 0) + 0.1)}   leg = paste("Data_", i,sep = "")   plot(resultslist_1600[[i]], type = "all", pch = ".", ylab = "Signal", log = "", axes = F)   lines(Zeit, der)   if((i/4)%%1 ==0){axis(1, at = seq(0, 360, length = 6), label = c(), font = 2)}   axis(2, at = pretty(na.omit(eval(parse(text=paste("bleeder1600[,",i,"]",sep =""))))), label = c())   mtext(side = 3, leg, line = -2)}   I understand, that I am supposed to submit working code. However, I deal with a fairly comprehensive data set and I have to generate a large list using another R package. Thus I explain what it does:   Generate time points(Zeit <- seq(0,300) Pulling the results from a nonlinear regression to more than 90 data sets from a list (resultslist_1600[[i]]) Test if prediction can be done try(guess <- predict(resultslist_1600[[i]]) )     if(class(guess) == "try-error") {next} (it turned out it can be done for all data set, as I am able to generate the graphs for each data set from the command line individually. Generating the first derivative and multiply it by 100 to adjust for the scale. fit <- smooth.spline(Zeit, guess) der <- 100*(predict(fit, Zeit, deriv = 1))\$y   The problem appears to be hidden in the mfrow statement. I spent quite a bit of time on this problem, thus any help or new ideas would be very much appreciated.   Thank you   Andreas Betz Scientist andreasbetz@ Dear helpers,   In an attempt to use a loop to generate graphs in a for loop in run into a problem. The plan is to fill each page with eight graphs (mfrow = c(4,2)) in to two columns. Only the buttom graphs ( meaning every fourth graph) have  tick labels on the x  axis to preserve space. I used an if .... Else statement to achieve that.   The problem is that the first eight graphs are skipped when I run the loop, the other graphs are fine.  However, all graphs can be generated individually. This indicates that the data sets are fine.     Pulling the results from a nonlinear regression to more than 90 data sets from a list (resultslist[[i]]) Generating the first derivative and multiply it by 100 to adjust for the scale.   Here is the code.   pdf('F:/diffnormal_16001a.pdf') par(mfcol = c(4,2)) for(i in 1: 92){     fit  <-  NULL     der <-  NULL     Zeit  <- NULL     Zeit <- seq(0,300)     try(guess <- predict(resultslist_1600[[i]]) )     if(class(guess) == "try-error") {next}     fit <- smooth.spline(Zeit, guess)     der <- 100*(predict(fit, Zeit, deriv = 1))\$y   if((i/4)%%1 ==0){par(mar =c(4,4,0, 0) + 0.1)}   else{par(mar =c(0,4,0, 0) + 0.1)}   leg = paste("Data_", i,sep = "")   plot(resultslist_1600[[i]], type = "all", pch = ".", ylab = "Signal", log = "", axes = F)   lines(Zeit, der)   if((i/4)%%1 ==0){axis(1, at = seq(0, 360, length = 6), label = c(), font = 2)}   axis(2, at = pretty(na.omit(eval(parse(text=paste("bleeder1600[,",i,"]",sep =""))))), label = c())   mtext(side = 3, leg, line = -2)}   I understand, that I am supposed to submit working code. However, I deal with a fairly comprehensive data set and I have to generate a large list using another R package. Thus I explain what it does:   Generate time points(Zeit <- seq(0,300) Pulling the results from a nonlinear regression to more than 90 data sets from a list (resultslist_1600[[i]]) Test if prediction can be done try(guess <- predict(resultslist_1600[[i]]) )     if(class(guess) == "try-error") {next} (it turned out it can be done for all data set, as I am able to generate the graphs for each data set from the command line individually. Generating the first derivative and multiply it by 100 to adjust for the scale. fit <- smooth.spline(Zeit, guess) der <- 100*(predict(fit, Zeit, deriv = 1))\$y   The problem appears to be hidden in the mfrow statement. I spent quite a bit of time on this problem, thus any help or new ideas would be very much appreciated.   Thank you   Andreas Betz Scientist [hidden email]             [[alternative HTML version deleted]] ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.