Hi I use a function plot.yy which i designed for convenieant plotting on 2 y axes for myself (see code below). You can modify its internals to suit your needs easily but this will give you something quite close.
plot.yy(1996:2000, c(80, 100, 95, 35, 28), c(7,8,6, 2, 3), xlim=c(1996, 2000), yylab=c("Resistence","Use"), xlab="Date", pch=c(NA,NA), linky=T) HTH Petr On 2 Mar 2007 at 11:54, Berta wrote: From: "Berta" <[EMAIL PROTECTED]> To: <r-help@stat.math.ethz.ch> Date sent: Fri, 2 Mar 2007 11:54:57 +0100 Organization: bioef Subject: [R] plot of 2 time series with very different values > > Hi R-Users, > > I am trying to plot two time series in the same plot, but they measure > different things and hence one > has values around 1-9 (Use=c(7,8, 6, 2, 3)), and the other one around > > 20-100 (Resitance=c(80, 100, 95, 35, 28)). I have thought of plotting > both in the same graph but with two axes, one from 1 to 9 and the > other from 20 to 100. To do so, I needed to do a regression for > corrsepondence (1 goes to 20 and 9 goes to 100); the code to produce > the graph would be: > > plot(1996:2000, xlim=c(1996, 2000),ylab="Resistence", ylim=c(20,100), > type="n", xlab="Date") lines(1996:2000, c(80, 100, 95, 35, 28), col=1) > axis(side=4, at=c(20,30,40,50,60,70,80,90,100), labels=c(1:9)) > lines(1996:2000, lsfit(c(1,9),c(20,100))$coef[1]+ > lsfit(c(1,9),c(20,100))$coef[2]*c(7,8,6, 2, 3), col=2) legend(1998.5, > 90, legend=c("Resistence", "Use"), fill=c(1,2)) > > However, I suspect there are better ways to do so, and I would like to > know one because I have to do that many times. > > Thanks a lot in advance, > > Berta > > ______________________________________________ > R-help@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. Here is the code, all parameters are easily understood except of rect, which will was designed for a plotting a rectangle and you can ignore it completely. plot.yy<-function(x,yright,yleft, yleftlim=NULL, yrightlim = NULL, xlab = NULL ,yylab=c("",""), pch=c(1,2),col=c(1,2), linky=F, smooth=0, lwds=1, length=10, format="%d/%m", rect=NULL, type="p",...) { par(mar=c(5,4,4,2),oma=c(0,0,0,3)) plot(x, yright, ylim=yrightlim, axes=F,ylab="", xlab=xlab, pch=pch[1],col=col[1], type=type, ...) if (!is.null(rect)) rect(x[rect[1]],rect[2],cas.osa[rect[3]],rect[4], col="grey") points(x, yright, ylim=yrightlim, ylab="", xlab=xlab, pch=pch[1],col=col[1], ...) axis(4,pretty(range(yright,na.rm=T),10),col=col[1]) if (linky) lines(x,yright,col=col[1], ...) if (smooth!=0) lines(supsmu(x,yright,span=smooth),col=col[1], lwd=lwds, ...) if(yylab[1]=="") mtext(deparse(substitute(yright)),side=4,outer=T,line=1, col=col[1], ...) else mtext(yylab[1],side=4,outer=T,line=1, col=col[1], ...) par(new=T) plot(x,yleft, ylim=yleftlim, ylab="", axes=F ,xlab=xlab, pch=pch[2],col=col[2], ...) box() axis(2,pretty(range(yleft,na.rm=T),10),col=col[2], col.axis=col[2]) if (!inherits(x,c("Date","POSIXt"))) axis(1,pretty(range(x,na.rm=T),10)) else { l<-length(x) axis(1,at=x[seq(1,l,length=length)],labels=format(as.POSIXct(x[seq(1,l ,length=length)]),format=format)) } if(yylab[2]=="") mtext(deparse(substitute(yleft)),side=2,line=2, col=col[2], ...) else mtext(yylab[2],side=2,line=2, col=col[2], ...) if (linky) lines(x,yleft,col=col[2], lty=2, ...) if (smooth!=0) lines(supsmu(x,yleft,span=smooth),col=col[2], lty=2, lwd=lwds, ...) } Petr Pikal [EMAIL PROTECTED] ______________________________________________ R-help@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.