Blog coding and discussion of coding about JavaScript, PHP, CGI, general web building etc.

Thursday, March 17, 2016

Add error bars to show standard deviation on a plot in R

Add error bars to show standard deviation on a plot in R


For each X-value I calculated the average Y-value and the standard deviation (sd) of each Y-value

x  = 1:5  y  = c(1.1, 1.5, 2.9, 3.8, 5.2)  sd = c(0.1, 0.3, 0.2, 0.2, 0.4)    plot (x, y)  

How can I use the standard deviation to add error bars to each datapoint of my plot?

Answer by csgillespie for Add error bars to show standard deviation on a plot in R


You can use segments to add the bars in base graphics. Here epsilon controls the line across the top and bottom of the line.

plot (x, y, ylim=c(0, 6))  epsilon = 0.02  for(i in 1:5) {      up = y[i] + sd[i]      low = y[i] - sd[i]      segments(x[i],low , x[i], up)      segments(x[i]-epsilon, up , x[i]+epsilon, up)      segments(x[i]-epsilon, low , x[i]+epsilon, low)  }  

As @thelatemail points out, I should really have used vectorised function calls:

segments(x, y-sd,x, y+sd)  epsilon = 0.02  segments(x-epsilon,y-sd,x+epsilon,y-sd)  segments(x-epsilon,y+sd,x+epsilon,y+sd)  

enter image description here

Answer by juba for Add error bars to show standard deviation on a plot in R


A solution with ggplot2 :

qplot(x,y)+geom_errorbar(aes(x=x, ymin=y-sd, ymax=y+sd), width=0.25)  

enter image description here

Answer by thelatemail for Add error bars to show standard deviation on a plot in R


In addition to @csgillespie's answer, segments is also vectorised to help with this sort of thing:

plot (x, y, ylim=c(0,6))  segments(x,y-sd,x,y+sd)  epsilon <- 0.02  segments(x-epsilon,y-sd,x+epsilon,y-sd)  segments(x-epsilon,y+sd,x+epsilon,y+sd)  

enter image description here

Answer by R_User for Add error bars to show standard deviation on a plot in R


A Problem with csgillespie solution appears, when You have an logarithmic X axis. The you will have a different length of the small bars on the right an the left side (the epsilon follows the x-values).

You should better use the errbar function from the Hmisc package:

d = data.frame(    x  = c(1:5)    , y  = c(1.1, 1.5, 2.9, 3.8, 5.2)    , sd = c(0.2, 0.3, 0.2, 0.0, 0.4)  )    ##install.packages("Hmisc", dependencies=T)  library("Hmisc")    # add error bars (without adjusting yrange)  plot(d$x, d$y, type="n")  with (    data = d    , expr = errbar(x, y, y+sd, y-sd, add=T, pch=1, cap=.1)  )    # new plot (adjusts Yrange automatically)  with (    data = d    , expr = errbar(x, y, y+sd, y-sd, add=F, pch=1, cap=.015, log="x")  )  

Answer by SmartCH for Add error bars to show standard deviation on a plot in R


You can use arrows:

arrows(x,y-sd,x,y+sd, code=3, length=0.02, angle = 90)  


Fatal error: Call to a member function getElementsByTagName() on a non-object in D:\XAMPP INSTALLASTION\xampp\htdocs\endunpratama9i\www-stackoverflow-info-proses.php on line 72

Related Posts:

0 comments:

Post a Comment

Popular Posts

Fun Page

Powered by Blogger.