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)
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)
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)
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
0 comments:
Post a Comment