# Re: R-beta: plot with error bars?

Bill Venables (wvenable@attunga.stats.adelaide.edu.au)
Sat, 20 Sep 1997 09:33:37 +0930

```Date: Sat, 20 Sep 1997 09:33:37 +0930
Message-Id: <9709200003.AA02491@attunga.stats.adelaide.edu.au>
From: Bill Venables <wvenable@attunga.stats.adelaide.edu.au>
To: Bill Simpson <wsimpson@uwinnipeg.ca>
Subject: Re: R-beta: plot with error bars?
In-Reply-To: <Pine.OSF.3.95.970919105836.20564C-100000@io.uwinnipeg.ca>
<Pine.OSF.3.95.970919105836.20564C-100000@io.uwinnipeg.ca>

Bill Simpson writes:
> I have read the Venables & Smith Notes on R.
> I was wondering if someone could tell me how to make an XY plot with error
> bars.
> 1. x holds x values, y holds y values, ci contains confidence interval
> (error bar stretches from y-ci to y+ci)
> 2. x, y, ucl contains upper confidence limit, lcl contains lower
> confidence limit.  Error bar stretches from lcl to ucl. Need this for
> asymmetrical error bars.

Peter Dalgaard has already offered a suggestion but here is a
more formal function that I often find useful.

plotCI <- function (x, y = NULL, uiw, liw = uiw, ..., sfrac = 0.01)  {
if (is.list(x)) {
y <- x\$y
x <- x\$x
}
if (is.null(y)) {
if (is.null(x))
stop("both x and y NULL")
y <- as.numeric(x)
x <- seq(along = x)
}
ui <- y + uiw
li <- y - liw
plot(x, y, ylim = range(c(y, ui, li)), ...)
smidge <- diff(par("usr")[1:2]) * sfrac
segments(x, li, x, ui)
x2 <- c(x, x)
ul <- c(li, ui)
segments(x2 - smidge, ul, x2 + smidge, ul)
invisible(list(x = x, y = y))
}

The arguments are pretty self-explanatory, but here is a brief
run-down:

x, y are as you would expect, although both may be replaced by an
xy-list, or if y is omitted, x is plotted against 1:length(x),

uiw is the distance(s) from y to the upper end of the interval,
liw is the distance(s) from y to the lower end of the interval,
(if omitted taken to be the same as uiw),

... allows extra arguments to be passed to plot, eg xlab, ylab,
type, lty, lwd, &c. (but not passed to segments()),

sfrac is the fraction of the x-axis width to be used as the
half-length of the seriphs that customarily go at each end
of the intervals, (by default 1%).

--
Bill Venables, Head, Dept of Statistics,    Tel.: +61 8 8303 5418
University of Adelaide,                     Fax.: +61 8 8303 3696
South AUSTRALIA.     5005.   Email: Bill.Venables@adelaide.edu.au
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request@stat.math.ethz.ch
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
```