Re: [R] multiple scale

From: Jeanie (Jie) Na <naj_at_ccf.org>
Date: Wed 03 Aug 2005 - 03:10:04 EST

Hi,
Search the list, you might be able to find the message but here it is.

Copied From Dr. Brian Ripley's post
> x <- 1:10
> y <- rnorm(10)
> z <- runif(10, 1000, 10000)
> par(mar=c(5,4,4,4) + 0.1) # Leave space for z axis
> plot(x, y)
> par(new=T)
> plot(x, z, type="l", axes=F, bty="n", xlab="", ylab="")
> axis(4, at=pretty(range(z)))
> mtext(z, 4, 3)
change last line to mtext("z", 4, 3).

J.
On Tue, 2005-08-02 at 17:18 +0100, herodote@oreka.com wrote:
> Hi all
>
> i need to put on one graph 2 functions who's x axis is the same and y not.
>
> I mean on horizontal the time, and on vertical left: pressure, on vertical right: rpm of a motor, is R able to do that?
>
> i've found this that i could adapt maybe (i don't need time series really?) :/ :
>
> (http://tolstoy.newcastle.edu.au/R/help/04/03/1456.html)
> ##
> ## Description: A simple function which plots two time series on one plot where
> ## the series can have different value intervals over the same time interval.
> ## Usage: ts.plot.2Axis(xleft, xright)
> ## Arguments: xleft is the time series for the left vertical axis and xright
> ## is for the right axis. xleft and xright are defined as time series with
> ## the 'ts' function in package ts.
> ## ts.plot function must be available, do library(ts) to ensure this if
> ## necessary.
> ## In addition the usual 'ts.plot' and 'plot' parameters can be set
> ## directly (mar, main, xlab, ylab, lwd) or through gpars as in ts.plot.
> ## Also parameter digits is the preferred number of decimal digits on right
> ## axis and ticks is the preferred number of tick marks on right axis.
> ## Details: The time series for the right vertical axis is scaled with a simple
> ## rule of thumb scaling.
> ## The ts.plot function is used to plot the series.
> ## Value: None.
> ## Note: When scaling is not acceptable try switching the series parameters.
> ## If a ylabel is to be set it is here only possible for the left axis.
> ## See also: 'ts.plot', 'ts', 'legend'.
> ## Author and date: Hauksson, Bjorn Arnar. March 2004.
> ## Example:
> ## First paste this function into the R console or use 'source'.
> #library(ts)
> #data(UKLungDeaths)
> #x <- ldeaths
> #y <- fdeaths/mdeaths
> #ts.plot.2Axis(x, y)
> #legTxt <- c("UK lung deaths", "UK female/male deaths (rhs)")
> #legend(1976.5, 3950, legTxt, lty=c(1:2), col=c(1:2), lwd=2, bty="n")
> ##
>
>
> ts.plot.2Axis <- function(xleft, xright, digits=1, ticks=5,
> mar=(c(4,4,4,4)+0.1), main="",
> xlab="", ylab="", lwd=2, gpars=list()) {
> # Settings for other parameters than those in the function parameter list
> par(mar=mar) # Margins
> k <- ncol(as.matrix(xleft)) # Number of time series on left vertical scale
> lty <- c(1:(k+1)) # Line types
> col <- c(1:(k+1)) # Line colors
>
>
> # Scale time series on right vertical axis
> scale <- (max(xleft)-min(xleft))/(max(xright)-min(xright))
> xright2 <- xright*scale
> meanScale <- mean(xleft) - mean(xright2)
> xright2 <- xright2 + meanScale
>
>
> # Plot the series
> ts.plot(xleft, xright2, lty=lty, col=col, main=main, ylab=ylab, xlab=xlab,
> lwd=lwd, gpars=gpars)
>
>
> # Add the right vertical axis labels
> lab <- seq(round(min(xright), digits), round(max(xright), digits),
> length=ticks)
> labAt <- seq(min(xright2), max(xright2), length=ticks)
> axis(side=4, labels=lab, at=labAt)
> }
>
> are there a better way to plot what i want?
>
> thks.
> guillaume.
>
> ////////////////////////////////////////////////////////////
> // Webmail Oreka : http://www.oreka.com
> ////////////////////////////////////////////////////////////
>
> ______________________________________________
> 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
>

-- 
Jeanie (Jie) Na

Programmer Analyst II                       _   _    ___    _   _    ____
Department of Quantitative Health Sciences [_]-[_]  / - \  | |_| |  (_(_
Cleveland Clinic Foundation                 |   |  ( |_| ) )  _  (   _| )
Tel: (216)4451369                          [_]-[_]  \_\_\  |_| |_|  (___/

______________________________________________
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
Received on Wed Aug 03 03:15:08 2005

This archive was generated by hypermail 2.1.8 : Sun 23 Oct 2005 - 15:01:53 EST