Skip to content

par(mfrow)

2 messages · Andrew Beckerman, stefano iacus

#
Dear all -
Not sure if this is really a troublshooting list, but here goes.

Please reply to me, and to the list if folks think it is of general interest.

After running a simulation, I am trying to invoke a 2 row 1 column graph 
with par(mfrow=c(2,1))

This is followed by calling the two graphs where ngen is the number of reps 
the simulation has run and rt and at are vectors of length ngen

plot(c(1:ngen),at)
plot(c(1:ngen),rt)

I am getting a error message:

Error in plot.xy(xy,......: negative length vectors not allowed.

a check on the length of the vectors length() displays them as all 1000 
(ngen) and positive.

If i run the simulation without the par call, each plot prints separately.
If i run a different simulation, par works fine.

Any ideas?  (the code is below)

cheers,
andrew
--------------------------------------------------------------------------
#parameter values for the run
mu<-0.045; phi0<-0.0009; x<-1;

# set up parts of matrix that don't change over time
A<-matrix(0,11,11);
for (i in 1:9) {A[i+1,i]<-1};
A[11,11]<-1-mu;

#initial population
xt<-0*c(1:11); xt[11]<-10; xt[5:10]<-20;

ngen<-1000;
at<-matrix(0,ngen,1);
rt<-matrix(0,ngen,1);

for (j in 1:ngen){
         # recruitment
         xj<-x*(1+0.05*rnorm(1));
         phi<-xj/(sum(xt[5:10])+xt[11]);
         if(phi<phi0) r<-0 else r<-0.94*(phi-phi0)/(0.0044+(phi-phi0));
         A[11,10]<-r; A[10,10]<-(1-r)*(1-mu);
         rt[j]<-r;

         #fecundity
         f<-9.5*(phi^0.345); A[1,11]<-0.5*f;

# experimentally added adult mortality
#       drate<-0.2      *(1+0.05*rnorm(1));
    drate<-0;
         A[11,11]<-1-mu-drate;

         xt<-A%*%xt;
         at[j]<-xt[11];
}

par(mfrow=c(2,1));
plot(c(1:ngen),at,type="b",cex=1.5); title("Adults");
plot(c(1:ngen),rt,type="b",cex=1.5); title("Recruitment");




Dr. Andrew Beckerman
Institute of Biological Science
University of Stirling, Stirling FK9 4LA, Scotland, UK
phone:+44 (0)1786 467808 fax: +44 (0)1786 464994
#
This problem is a known bug of the macintosh() device. Usually by simply 
enlarging the window solves the problem of "negative length".

It is written in the Mac Faq and I'm trying to fix this too for the next 
release. Sorry about that.

Stefano
On Mercoledì, maggio 30, 2001, at 11:12 , Andrew Beckerman wrote: