Faramarzi Monireh
2007-Mar-07 08:39 UTC
[R] How to open more windows to make more graphs at once!
Dear R users, I have a data frame (test) including five columns of upper (numeric), lower (numeric), observed (numeric), best_sim (numeric) and stname (factor with 80 levels, each level with different length). Now I would like to write a short program to draw one graph as follow for each level of stname but I would like also to draw each time 12 graphs for the 12 levels of stname in the same graphic windows and save it as "jpeg' file . This means at the end I will have 7 (80 levels/12=7) graphic windows and 7 jpeg files each one with 12 graphs (the last one with 8 graphs) for the 12 levels of stname. I already wrote the following script to do it each time for 12 levels of stname but I have to change script each time for the another 12 levels [line 3 in the script for example: for( i in levels(test$stname)[12:24))] and I do not know how can I save the obtained graphs (seven graphic windows) as jpeg files (e.g. plot1.jpeg, plot2.jpeg and so on). As I have 45 dataset like this it would be great if somebody can help me to complete this script to do all together for a dataset using a script. Thank you very much in advance for your cooperation, Monireh windows(9,9) par(mfrow = c(3,4)) for( i in levels(test$stname)[1:12]) { data<- test[test$stname==i,] xx <- c(1:length(data$upper), length(data$upper):1) yy <- c(data$upper, rev(data$lower)) zz<- data$observed tt<- data$Best_Sim par(lab =c(10,15,2)) plot.jpeg<- plot(xx,yy, type="n", xlim=c(min(xx), max(xx)), ylim=c(min(zz,yy,tt), max(yy,zz,tt)*1.4), main= i, xlab="Month (1990-2002)", ylab="Discharge(m3/s)", font.axis=6) polygon(xx, yy, col="green", border = "NA") lines(zz, col="blue", lwd=1.5) lines(tt,col="red", lwd=1.5) legend(length(zz)-60, max(yy,zz,tt)*1.45, c("Upper Limit", "Lower Limit", " Observed","Best etimation") , lwd=c(10, 1,1.7,1.7), bty="n", col= c("green", "white", "blue","red")) }
Nicolas Mazziotta
2007-Mar-07 09:11 UTC
[R] How to open more windows to make more graphs at once!
Hello, See ?Devices ?dev.print e.g. X11() # opens a new screen device plot(1:10) # plots points on the device dev.print(jpeg, [args]) # prints from the X11 device to a jpeg file dev.off() # close X11 device or jpeg([args]) # opens a jpeg device (file) for plotting plot(1:10) # plots points on the device dev.off() # closes connection to the jpeg device Hope this helps. Regards, -- Nicolas Mazziotta The contents of this e-mail, including any attachments, are ...{{dropped}}
ONKELINX, Thierry
2007-Mar-07 09:18 UTC
[R] How to open more windows to make more graphs at once!
Creating more than one graphic windows is, as far as I know, not possible in R. But it's no problem to run a script which create multiply jpeg's. See ?jpeg on how to create jpeg's. Cheers, Thierry ------------------------------------------------------------------------ ---- ir. Thierry Onkelinx Instituut voor natuur- en bosonderzoek / Reseach Institute for Nature and Forest Cel biometrie, methodologie en kwaliteitszorg / Section biometrics, methodology and quality assurance Gaverstraat 4 9500 Geraardsbergen Belgium tel. + 32 54/436 185 Thierry.Onkelinx op inbo.be www.inbo.be Do not put your faith in what statistics say until you have carefully considered what they do not say. ~William W. Watt A statistical analysis, properly conducted, is a delicate dissection of uncertainties, a surgery of suppositions. ~M.J.Moroney> -----Oorspronkelijk bericht----- > Van: r-help-bounces op stat.math.ethz.ch [mailto:r-help- > bounces op stat.math.ethz.ch] Namens Faramarzi Monireh > Verzonden: woensdag 7 maart 2007 9:39 > Aan: r-help op stat.math.ethz.ch > Onderwerp: [R] How to open more windows to make more graphs at once! > > > Dear R users, > I have a data frame (test) including five columns of upper (numeric), > lower (numeric), observed (numeric), best_sim (numeric) and stname(factor> with 80 levels, each level with different length). Now I would like to > write a short program to draw one graph as follow for each level ofstname> but I would like also to draw each time 12 graphs for the 12 levels of > stname in the same graphic windows and save it as "jpeg' file . Thismeans> at the end I will have 7 (80 levels/12=7) graphic windows and 7 jpegfiles> each one with 12 graphs (the last one with 8 graphs) for the 12 levelsof> stname. I already wrote the following script to do it each time for 12 > levels of stname but I have to change script each time for the another12> levels [line 3 in the script for example: for( i in > levels(test$stname)[12:24))] and I do not know how can I save theobtained> graphs (seven graphic windows) as jpeg files (e.g. plot1.jpeg,plot2.jpeg> and so on). As I have 45 dataset like this it would be gr! > eat if somebody can help me to complete this script to do alltogether> for a dataset using a script. > Thank you very much in advance for your cooperation, > Monireh > > > > windows(9,9) > par(mfrow = c(3,4)) > for( i in levels(test$stname)[1:12]) > { > data<- test[test$stname==i,] > xx <- c(1:length(data$upper), length(data$upper):1) > yy <- c(data$upper, rev(data$lower)) > zz<- data$observed > tt<- data$Best_Sim > par(lab =c(10,15,2)) > plot.jpeg<- plot(xx,yy, type="n", xlim=c(min(xx), max(xx)), > ylim=c(min(zz,yy,tt), max(yy,zz,tt)*1.4), > main= i, xlab="Month (1990-2002)", ylab="Discharge(m3/s)",font.axis=6)> polygon(xx, yy, col="green", border = "NA") > lines(zz, col="blue", lwd=1.5) > lines(tt,col="red", lwd=1.5) > legend(length(zz)-60, max(yy,zz,tt)*1.45, c("Upper Limit", "LowerLimit",> " Observed","Best etimation") > , lwd=c(10, 1,1.7,1.7), bty="n", col= c("green", "white","blue","red"))> } > > ______________________________________________ > R-help op stat.math.ethz.ch 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.
Gavin Simpson
2007-Mar-07 09:25 UTC
[R] How to open more windows to make more graphs at once!
On Wed, 2007-03-07 at 09:39 +0100, Faramarzi Monireh wrote:> Dear R users, > I have a data frame (test) including five columns of upper (numeric), > lower (numeric), observed (numeric), best_sim (numeric) and stname > (factor with 80 levels, each level with different length). Now I would > like to write a short program to draw one graph as follow for each > level of stname but I would like also to draw each time 12 graphs for > the 12 levels of stname in the same graphic windows and save it as > "jpeg' file . This means at the end I will have 7 (80 levels/12=7) > graphic windows and 7 jpeg files each one with 12 graphs (the last one > with 8 graphs) for the 12 levels of stname. I already wrote the > following script to do it each time for 12 levels of stname but I have > to change script each time for the another 12 levels [line 3 in the > script for example: for( i in levels(test$stname)[12:24))] and I do > not know how can I save the obtained graphs (seven graphic windows) as > jpeg files (e.g. plot1.jpeg, plot2.jpeg and so on). As I have 45 > dataset like this it would be gr! > eat if somebody can help me to complete this script to do all > together for a dataset using a script. > Thank you very much in advance for your cooperation, > Monireh >Hi Monireh, I don't have your data set so I have generated some random data to illustrate one approach to this. ## generate some data set.seed(1234) dat <- data.frame(upper = rnorm(100), lower = rnorm(100), observed = rnorm(100), best_sim = rnorm(100), stname = factor(gl(5, 20), labels = letters[1:5])) ## because this is going to be called 45 times, I've wrapped it in a ## function, foo() ## Note the filename arg. It contains "%03d" which means that R will ## insert a number and produce many jpegs, varying by this number ## e.g. myplot1.jpeg, myplot2.jpeg - see ?jpeg. ## the "..." allow passing of arguments to jpeg foo <- function(x, filename = "Rplot%03d.jpeg", ...) { ## start the jpeg device jpeg(filename = filename, ...) ## store the parameter defaults and set a 2 by 2 plot regions opar <- par(mfrow = c(2,2)) ## this insures that the device is closed and defaults restored on ## function exit on.exit({dev.off(); par(opar)}) ## set up a loop to go over the levels of your factor for(i in levels(x$stname)) { ## do the plotting - here you need to add the plot commands ## you really want to use - these are just examples. plot(lower ~ upper, data = x, subset = stname == i) ## this just adds a lowess line, I use with() to make it easier ## to read. with(x, lines(lowess(upper[stname == i], lower[stname == i]), col = "red")) } invisible() } ## to use the function on the demo data ## uses default filename foo(dat) ## or passing arguments to jpeg() foo(dat, width = 600, height = 600, pointsize = 10) ## or using your own file name foo(dat, filename = "dataset1_%03d.jpeg", width = 600, height = 600, pointsize = 10) See ?jpeg to see why this works - the filename with "%03d" allows R to produce several jpegs.> > windows(9,9) > par(mfrow = c(3,4)) > for( i in levels(test$stname)[1:12]) > { > data<- test[test$stname==i,] > xx <- c(1:length(data$upper), length(data$upper):1) > yy <- c(data$upper, rev(data$lower)) > zz<- data$observed > tt<- data$Best_Sim > par(lab =c(10,15,2))In the line below, where you set the x- and y-limits, it would be simpler and more readable to use range() instead of c(min(x), max(x) - so your plot call could be: plot.jpeg<- plot(xx,yy, type="n", xlim= range(xx), ylim=range(zz,yy,tt)*1.4), main= i, xlab="Month (1990-2002)", ylab="Discharge(m3/s)", font.axis=6) Also, you can format the y-label more nicely with: ylab = expression(paste("Discharge (", m^-3 * s^{-1}, ")")) HTH G -- %~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~% Gavin Simpson [t] +44 (0)20 7679 0522 ECRC [f] +44 (0)20 7679 0565 UCL Department of Geography Pearson Building [e] gavin.simpsonATNOSPAMucl.ac.uk Gower Street London, UK [w] http://www.ucl.ac.uk/~ucfagls/ WC1E 6BT [w] http://www.freshwaters.org.uk/ %~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%
James W. MacDonald
2007-Mar-07 13:51 UTC
[R] How to open more windows to make more graphs at once!
Alberto Monteiro wrote:> Ted Harding wrote: > >>>Creating more than one graphic windows is, as far as I know, not >>>possible in R. >> >> >>But, as to whether/to what extent X or equivalent is available for >>MS Windows, that is another question on which I have no expertise. >> > > X11() seems to work for Windows XP.Although I believe the preferred method is windows(). Best, Jim> > Alberto Monteiro > > ______________________________________________ > R-help at stat.math.ethz.ch 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.-- James W. MacDonald, M.S. Biostatistician Affymetrix and cDNA Microarray Core University of Michigan Cancer Center 1500 E. Medical Center Drive 7410 CCGC Ann Arbor MI 48109 734-647-5623 ********************************************************** Electronic Mail is not secure, may not be read every day, and should not be used for urgent or sensitive issues.
José Rafael Ferrer Paris
2007-Mar-07 15:06 UTC
[R] How to open more windows to make more graphs at once!
Dear Monireh, try using lattice: library(lattice) set.seed(1234) dat <- data.frame(months=rep(1:10,80),upper = rnorm(800)+1, lower = rnorm(800)-1, observed = rnorm(800), best.sim = rnorm(800), stname = factor(gl(80, 10))) jpeg(filename = "Rplot%03d.jpeg") xyplot(best.sim+observed+lower+upper~months|stname,dat, layout=c(3,4),type="b",auto.key=T) dev.off() It should produce almost exactly what you want. Lattice is a very powerful tool for creating multiple graphics. You can customize the individual plots within the lattice using panel and prepanel functions, take a look at the documentation of the library and the documentation of xyplot and panel.xyplot. Lattice is a little bit more complex than "normal" plots in R, so you would have to spend more time in learning how to use its functionality, but it is worth trying. have a lot of fun JR El mi?, 07-03-2007 a las 09:39 +0100, Faramarzi Monireh escribi?:> Dear R users, > I have a data frame (test) including five columns of upper (numeric), lower (numeric), observed (numeric), best_sim (numeric) and stname (factor with 80 levels, each level with different length). Now I would like to write a short program to draw one graph as follow for each level of stname but I would like also to draw each time 12 graphs for the 12 levels of stname in the same graphic windows and save it as "jpeg' file . This means at the end I will have 7 (80 levels/12=7) graphic windows and 7 jpeg files each one with 12 graphs (the last one with 8 graphs) for the 12 levels of stname. I already wrote the following script to do it each time for 12 levels of stname but I have to change script each time for the another 12 levels [line 3 in the script for example: for( i in levels(test$stname)[12:24))] and I do not know how can I save the obtained graphs (seven graphic windows) as jpeg files (e.g. plot1.jpeg, plot2.jpeg and so on). As I have 45 dataset like this it would be gr! > eat if somebody can help me to complete this script to do all together for a dataset using a script. > Thank you very much in advance for your cooperation, > Monireh > > > > windows(9,9) > par(mfrow = c(3,4)) > for( i in levels(test$stname)[1:12]) > { > data<- test[test$stname==i,] > xx <- c(1:length(data$upper), length(data$upper):1) > yy <- c(data$upper, rev(data$lower)) > zz<- data$observed > tt<- data$Best_Sim > par(lab =c(10,15,2)) > plot.jpeg<- plot(xx,yy, type="n", xlim=c(min(xx), max(xx)), ylim=c(min(zz,yy,tt), max(yy,zz,tt)*1.4), > main= i, xlab="Month (1990-2002)", ylab="Discharge(m3/s)", font.axis=6) > polygon(xx, yy, col="green", border = "NA") > lines(zz, col="blue", lwd=1.5) > lines(tt,col="red", lwd=1.5) > legend(length(zz)-60, max(yy,zz,tt)*1.45, c("Upper Limit", "Lower Limit", " Observed","Best etimation") > , lwd=c(10, 1,1.7,1.7), bty="n", col= c("green", "white", "blue","red")) > } > > ______________________________________________ > R-help at stat.math.ethz.ch 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.