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] <mailto:[hidden email]> [[alternative HTML version deleted]] ______________________________________________ [hidden email] 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. |
Hi
[hidden email] napsal dne 14.06.2011 18:28:42: > Andreas Betz <[hidden email]> > Odeslal: [hidden email] > > 14.06.2011 18:28 > > Komu > > <[hidden email]> > > Kopie > > Předmět > > [R] 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)} Maybe the else just moved due to mailer but it shall be on the same line as if statement to be executed. But in that case you would obtain error message. However when I get rid of all I do not have from your code pdf("test.pdf") par(mfcol = c(4,2)) for(i in 1: 8){ fit <- NULL der <- NULL Zeit <- NULL Zeit <- seq(0,300) 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(Zeit, Zeit, pch = 19, cex=3, ylab = "Signal", axes = F) if((i/4)%%1 ==0){axis(1, at = seq(0, 360, length = 6), label = c(), font = 2)} mtext(side = 3, leg, line = -2)} dev.off() It seems to me that plotting works as expected. Regards Petr > 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] <mailto:[hidden email]> > > > > > > > [[alternative HTML version deleted]] > > ______________________________________________ > [hidden email] mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > and provide commented, minimal, self-contained, reproducible code. ______________________________________________ [hidden email] 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. |
Free forum by Nabble | Edit this page |