s-news
[Top] [All Lists]

SUMMARY: error bars

To: s-news@lists.biostat.wustl.edu
Subject: SUMMARY: error bars
From: "Aigner-Torres, Mario" <mario.aigner-torres@erdw.ethz.ch>
Date: Wed, 20 Dec 2000 09:20:43 +0100
Reply-to: "Aigner-Torres, Mario" <mario.aigner-torres@erdw.ethz.ch>
I would like to express my gratitude for those who answered and tried
to help my original question about plotting error bars within
Trellis.
Thanks to Marcel Baumgartner, Nick Ellis, Jean Adams, Steve Wofsy,
Patrick Connolly, Henrik Nielsen, Jim Pratt, Madeline Bauer, Frank
Harrel, Martin Maerchler, and John Maindonald.

 - Original question:

Dear S-users:

I would like to plot in my graph both error bars (here the sample
standard deviation of the data or an estimate of the standard
deviation, e.g. the standard error) from X's and Y's. How would a
command-line script for this task look like?
Thanks for your attention and consideration.

 - from Nick Ellis


x<-y<-1:10
plot(x,y)
errbar(x,y,y+x/10,y-x/10,x+y/20,x-y/10,add=T)

This is the modified function
errbar <-
function(x, y, yplus, yminus, xplus, xminus, cap = 0.015, xlab =
as.character(
        substitute(x)), ylab = as.character(substitute(y)), add = F, lty = 1,
        ylim, lwd = 1, ...)
{
        if(missing(ylim))
                ylim <- range(y, yplus, yminus, na.rm = T)
        if(!add)
                plot(x, y, ylim = ylim, xlab = xlab, ylab = ylab, ...)
        xcoord <- par()$usr[1:2]
        segments(x, yminus, x, yplus, lty = lty, lwd = lwd)
        smidge <- (cap * (xcoord[2] - xcoord[1]))/2
        segments(x - smidge, yminus, x + smidge, yminus, lwd = lwd)
        segments(x - smidge, yplus, x + smidge, yplus, lwd = lwd)
        if(!missing(xplus)) {
                segments(xminus, y, xplus, y, lty = lty, lwd = lwd)
                ycoord <- par()$usr[3:4]
                smidge <- (cap * (ycoord[2] - ycoord[1]))/2
                segments(xminus, y - smidge, xminus, y + smidge, lwd = lwd)
                segments(xplus, y - smidge, xplus, y + smidge, lwd = lwd)
        }
}


 - from Jean Adams

x <- sample(5, 100, T)
y <- rnorm(100)
uniq.x <- sort(unique(x))
mean.y <- tapply(y, x, mean)
sd.y <- sqrt(tapply(y, x, var))
error.bar(uniq.x, mean.y, sd.y)


 - from Jim Pratt

errorbar<-function(x, y, plusmin, size = 0.2)
{
        plot(x, y, ylim = c(min(y - plusmin), max(y + 
                plusmin)), type = "b")
        segments(x, y + plusmin, x, y - plusmin)
        par.cin.x <- par()$cin[1]
        segments(x - size * par.cin.x, y - plusmin, x + 
                size * par.cin.x, y - plusmin)
        segments(x - size * par.cin.x, y + plusmin, x + 
                size * par.cin.x, y + plusmin)
}

-- 

___________________
Mario Aigner-Torres

Inst. of Mineralogy & Petrography (IMP)
Swiss Federal Inst. of Technology (ETH)
Sonneggstrasse 5
CH - 8092 Zurich
Switzerland

email: mario@erdw.ethz.ch
phone: 41-1-632 3803
fax: 41-1-632 1088

<Prev in Thread] Current Thread [Next in Thread>
  • SUMMARY: error bars, Aigner-Torres, Mario <=