statquant2 wrote on 09/28/2011 10:01:30 AM: > > Hello I am trying to write a function that would plot timeseries easily... > I aim at plotting two time-series on 2 different y axis sharing the same > x-axis > > I succeded in doing so: > plotTimeSerie(x,y,y2,[a lot of other args]){ > ... > plot() > axis.POSIXct(side=1) #here I build the x-axis > points() #here I plot the first time serie related to y-axis > ... > axis(side=2,[some args]) > text(side=2,text="",[some args]) #here I build the y-left axis and annotate > with text > ... > points() #here I plot the first time serie related to y-right axis > axis(side=4,[some args]) > text(side=2,text="",[some args]) #here I build the y-right axis and annotate > with text > > } > > My problem is that I would like the user to be able to specify any > parameters he wishes for the axis/points functions. > How can I make plotTimeSerie handling any parameters and pass them into the > specified functions (points,axis...)?
You'll have to create argument names that specify which function they are to be passed to. For example: myplot <- function(x, y, pt.col="black", ax1.col="black", ax2.col="black") { plot(x, y, type="n", axes=F) points(x, y, col=pt.col) axis(1, col=ax1.col) axis(2, col=ax2.col) } myplot(1:10, 1:10, pt.col="red", ax1.col="blue", ax2.col="orange") If there was one function that you thought would need the most specifications, you could use ellipses (...) to allow for inclusion of any arguments. For example: myplot <- function(x, y, ax1.col="black", ax2.col="black", ...) { plot(x, y, type="n", axes=F) points(x, y, ...) axis(1, col=ax1.col) axis(2, col=ax2.col) } myplot(1:10, 1:10, ax1.col="blue", ax2.col="orange", pch=16, col="red", cex=3) Jean [[alternative HTML version deleted]] ______________________________________________ R-help@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.