Hello, Below is some example code that should reproduce an error I'm encountering while trying to create a tiff plot with two subplots. If I run just the following bit of code through the R GUI the result is what I'd like to have appear in the saved tiff image: x<-seq(0:20) y<-c(1,1,2,2,3,4,5,4,3,6,7,1,1,2,2,3,4,5,4,3,6) plot(x,y,type="l",las=1,ylim=c(0,12)) subplot(edm.sub(x[seq(1:5)],y[seq(1:5)]),x=4,y=9,size=c(1,1.5)) subplot(edm.sub(x[seq(15,20,by=1)],y[seq(15,20,by=1)]),x=17,y=9,size=c(1,1.5)) However, if expanding on this code with: edm.sub<-function(x,y){plot(x,y,col="red",frame.plot=F, las=1,xaxs="i",yaxs="i",type="b", ylim=c(0,6),xlab="",ylab="")} png("c:/temp/lookat.tif",res=120,height=600,width=1200) layout(matrix(c(1,2),2,2,byrow=TRUE),c(1.5,2.5),respect=TRUE) plot(seq(1:10),seq(1:10),type="l",las=1,col="blue") plot(x,y,type="l",las=1,ylim=c(0,12)) subplot(edm.sub(x[seq(1:5)],y[seq(1:5)]),x=4,y=9,size=c(1,1.5)) subplot(edm.sub(x[seq(15,20,by=1)],y[seq(15,20,by=1)]),x=17,y=9,size=c(1,1.5)) dev.off() One will notice the second subplot is out of position (notice the y-coordinate is the same for both subplots...y=9): http://r.789695.n4.nabble.com/file/n3875917/lookat.png If I try to 'guess' a new y-coordinate for the second subplot, say y=10: png("c:/temp/lookat.tif",res=120,height=600,width=1200) layout(matrix(c(1,2),2,2,byrow=TRUE),c(1.5,2.5),respect=TRUE) plot(seq(1:10),seq(1:10),type="l",las=1,col="blue") plot(x,y,type="l",las=1,ylim=c(0,12)) subplot(edm.sub(x[seq(1:5)],y[seq(1:5)]),x=4,y=9,size=c(1,1.5)) subplot(edm.sub(x[seq(15,20,by=1)],y[seq(15,20,by=1)]),x=17,y=10,size=c(1,1.5)) dev.off() R kicks back the following message Error in plot.new() : plot region too large Am I mis-using subplot? Thanks, Eric -- View this message in context: http://r.789695.n4.nabble.com/subplot-strange-behavoir-tp3875917p3875917.html Sent from the R help mailing list archive at Nabble.com.
Hi, I'm assuming you're using subplot() from Hmisc, but it's a good idea to specify. It's not subplot() that's causing the problem, it's layout, or rather the interaction between the two. This section run at the command line doesn't work: layout(matrix(c(1,2),2,2,byrow=TRUE),c(1.5,2.5),respect=TRUE) plot(seq(1:10),seq(1:10),type="l",las=1,col="blue") plot(x,y,type="l",las=1,ylim=c(0,12)) subplot(edm.sub(x[seq(1:5)],y[seq(1:5)]),x=4,y=9,size=c(1,1.5)) subplot(edm.sub(x[seq(15,20,by=1)],y[seq(15,20,by=1)]),x=17,y=9,size=c(1,1.5)) You appear to have run afoul of two things: from ?subplot Any graphical parameter settings that you would like to be in place before ?fun? is evaluated can be specified in the ?pars? argument (warning: specifying layout parameters here (?plt?, ?mfrow?, etc.) may cause unexpected results). and from ?layout These functions are totally incompatible with the other mechanisms for arranging plots on a device: ?par(mfrow)?, ?par(mfcol)? and ?split.screen?. And also apparently subplot(). You could try asking the package maintainer, but I think you may be better off making two separate figures. Or you could delve into the mysteries of par(), of course. Incidentally, you can't use png() to make a tif, no matter what you call it. You probably want tiff() instead. Sarah On Wed, Oct 5, 2011 at 3:40 PM, emorway <emorway at usgs.gov> wrote:> Hello, > > Below is some example code that should reproduce an error I'm encountering > while trying to create a tiff plot with two subplots. ?If I run just the > following bit of code through the R GUI the result is what I'd like to have > appear in the saved tiff image: > > x<-seq(0:20) > y<-c(1,1,2,2,3,4,5,4,3,6,7,1,1,2,2,3,4,5,4,3,6) > plot(x,y,type="l",las=1,ylim=c(0,12)) > subplot(edm.sub(x[seq(1:5)],y[seq(1:5)]),x=4,y=9,size=c(1,1.5)) > subplot(edm.sub(x[seq(15,20,by=1)],y[seq(15,20,by=1)]),x=17,y=9,size=c(1,1.5)) > > However, if expanding on this code with: > > edm.sub<-function(x,y){plot(x,y,col="red",frame.plot=F, > ? ? ? ? ? ? ? ? ? ? ? las=1,xaxs="i",yaxs="i",type="b", > ? ? ? ? ? ? ? ? ? ? ? ylim=c(0,6),xlab="",ylab="")} > > png("c:/temp/lookat.tif",res=120,height=600,width=1200) > layout(matrix(c(1,2),2,2,byrow=TRUE),c(1.5,2.5),respect=TRUE) > plot(seq(1:10),seq(1:10),type="l",las=1,col="blue") > plot(x,y,type="l",las=1,ylim=c(0,12)) > subplot(edm.sub(x[seq(1:5)],y[seq(1:5)]),x=4,y=9,size=c(1,1.5)) > subplot(edm.sub(x[seq(15,20,by=1)],y[seq(15,20,by=1)]),x=17,y=9,size=c(1,1.5)) > dev.off() > > One will notice the second subplot is out of position (notice the > y-coordinate is the same for both subplots...y=9): > http://r.789695.n4.nabble.com/file/n3875917/lookat.png > > If I try to 'guess' a new y-coordinate for the second subplot, say y=10: > > png("c:/temp/lookat.tif",res=120,height=600,width=1200) > layout(matrix(c(1,2),2,2,byrow=TRUE),c(1.5,2.5),respect=TRUE) > plot(seq(1:10),seq(1:10),type="l",las=1,col="blue") > plot(x,y,type="l",las=1,ylim=c(0,12)) > subplot(edm.sub(x[seq(1:5)],y[seq(1:5)]),x=4,y=9,size=c(1,1.5)) > subplot(edm.sub(x[seq(15,20,by=1)],y[seq(15,20,by=1)]),x=17,y=10,size=c(1,1.5)) > dev.off() > > R kicks back the following message > Error in plot.new() : plot region too large > > Am I mis-using subplot? > > Thanks, Eric >-- Sarah Goslee http://www.functionaldiversity.org
When I copy and paste your code I get what is expected, the 2 subplots line up on the same y-value. What version of R are you using, which version of subplot? What platform? -- Gregory (Greg) L. Snow Ph.D. Statistical Data Center Intermountain Healthcare greg.snow at imail.org 801.408.8111> -----Original Message----- > From: r-help-bounces at r-project.org [mailto:r-help-bounces at r- > project.org] On Behalf Of emorway > Sent: Wednesday, October 05, 2011 1:40 PM > To: r-help at r-project.org > Subject: [R] subplot strange behavoir > > Hello, > > Below is some example code that should reproduce an error I'm > encountering > while trying to create a tiff plot with two subplots. If I run just > the > following bit of code through the R GUI the result is what I'd like to > have > appear in the saved tiff image: > > x<-seq(0:20) > y<-c(1,1,2,2,3,4,5,4,3,6,7,1,1,2,2,3,4,5,4,3,6) > plot(x,y,type="l",las=1,ylim=c(0,12)) > subplot(edm.sub(x[seq(1:5)],y[seq(1:5)]),x=4,y=9,size=c(1,1.5)) > subplot(edm.sub(x[seq(15,20,by=1)],y[seq(15,20,by=1)]),x=17,y=9,size=c( > 1,1.5)) > > However, if expanding on this code with: > > edm.sub<-function(x,y){plot(x,y,col="red",frame.plot=F, > las=1,xaxs="i",yaxs="i",type="b", > ylim=c(0,6),xlab="",ylab="")} > > png("c:/temp/lookat.tif",res=120,height=600,width=1200) > layout(matrix(c(1,2),2,2,byrow=TRUE),c(1.5,2.5),respect=TRUE) > plot(seq(1:10),seq(1:10),type="l",las=1,col="blue") > plot(x,y,type="l",las=1,ylim=c(0,12)) > subplot(edm.sub(x[seq(1:5)],y[seq(1:5)]),x=4,y=9,size=c(1,1.5)) > subplot(edm.sub(x[seq(15,20,by=1)],y[seq(15,20,by=1)]),x=17,y=9,size=c( > 1,1.5)) > dev.off() > > One will notice the second subplot is out of position (notice the > y-coordinate is the same for both subplots...y=9): > http://r.789695.n4.nabble.com/file/n3875917/lookat.png > > If I try to 'guess' a new y-coordinate for the second subplot, say > y=10: > > png("c:/temp/lookat.tif",res=120,height=600,width=1200) > layout(matrix(c(1,2),2,2,byrow=TRUE),c(1.5,2.5),respect=TRUE) > plot(seq(1:10),seq(1:10),type="l",las=1,col="blue") > plot(x,y,type="l",las=1,ylim=c(0,12)) > subplot(edm.sub(x[seq(1:5)],y[seq(1:5)]),x=4,y=9,size=c(1,1.5)) > subplot(edm.sub(x[seq(15,20,by=1)],y[seq(15,20,by=1)]),x=17,y=10,size=c > (1,1.5)) > dev.off() > > R kicks back the following message > Error in plot.new() : plot region too large > > Am I mis-using subplot? > > Thanks, Eric > > -- > View this message in context: http://r.789695.n4.nabble.com/subplot- > strange-behavoir-tp3875917p3875917.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help at 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.