Plotting Error Bars In R
Contents |
here for a quick overview of the site Help Center Detailed answers to any questions you might have Meta Discuss the workings and policies of this site About Us Learn more about Stack Overflow error.bar function r the company Business Learn more about hiring developers or posting ads with us Stack Overflow error bars in r barplot Questions Jobs Documentation Tags Users Badges Ask Question x Dismiss Join the Stack Overflow Community Stack Overflow is a community of
Scatter Plot With Error Bars In R
6.2 million programmers, just like you, helping each other. Join them; it only takes a minute: Sign up Scatter plot with error bars up vote 21 down vote favorite 11 How can I generate the following
Errbar R
plot in R? Points, shown in the plot are the averages, and their ranges correspond to minimal and maximal values. I have data in two files (below is an example). x y 1 0.8773 1 0.8722 1 0.8816 1 0.8834 1 0.8759 1 0.8890 1 0.8727 2 0.9047 2 0.9062 2 0.8998 2 0.9044 2 0.8960 .. ... r plot share|improve this question edited Oct 23 '12 at 15:10 Roland 74.1k463103 asked Oct r arrows 23 '12 at 14:29 sherlock85 1521313 Since you clearly don't want a boxplot, I changed the title of your question in order to reflect what you really want. –Roland Oct 23 '12 at 15:11 1 also plotrix::plotCI, gplots::plotCI, library("sos"); findFn("{error bar}") –Ben Bolker Oct 23 '12 at 17:29 add a comment| 5 Answers 5 active oldest votes up vote 52 down vote accepted First of all: it is very unfortunate and surprising that R cannot draw error bars "out of the box". Here is my favourite workaround, the advantage is that you do not need any extra packages. The trick is to draw arrows (!) but with little horizontal bars instead of arrowheads (!!!). This not-so-straightforward idea comes from the R Wiki Tips and is reproduced here as a worked-out example. Let's assume you have a vector of "average values" avg and another vector of "standard deviations" sdev, they are of the same length n. Let's make the abscissa just the number of these "measurements", so x <- 1:n. Using these, here come the plotting commands: plot(x, avg, ylim=range(c(avg-sdev, avg+sdev)), pch=19, xlab="Measurements", ylab="Mean +/- SD", main="Scatter plot with std.dev error bars" ) # hack: we draw arrows but with very special "arrowheads" arrows(x, avg-sdev, x, avg+sdev, length=0.05, angle=90, code=3) The result
by over 573 bloggers. There are many ways to follow us - By e-mail: On Facebook:
Ggplot2 Error Bars
If you are an R blogger yourself you are invited to add summaryse r your own R content feed to this site (Non-English R bloggers should add themselves- here) Jobs for R-usersStatistical calculate standard error in r Analyst @ Rostock, Mecklenburg-Vorpommern, GermanyData EngineerData Scientist – Post-Graduate Programme @ Nottingham, EnglandDirector, Real World Informatics & Analytics Data Science @ Northbrook, Illinois, U.S.Junior statistician/demographer for UNICEF Popular Searches http://stackoverflow.com/questions/13032777/scatter-plot-with-error-bars web scraping heatmap twitter maps time series animation boxplot shiny hadoop ggplot2 how to import image file to R trading finance latex eclipse rstudio excel SQL ggplot quantmod knitr googlevis PCA market research rattle regression map tutorial coplot rcmdr Recent Posts Election 2016: Tracking Emotions with R and Python Data science for executives and managers The Worlds Economic Data, Shiny https://www.r-bloggers.com/building-barplots-with-error-bars/ Apps and all you want to know about Propensity Score Matching! August Package Picks Slack all the things! Warsaw R-Ladies Notes from the Kölner R meeting, 14 October 2016 anytime 0.0.4: New features and fixes 2016-13 ‘DOM’ Version 0.3 Building a package automatically The new R Graph Gallery Network Analysis Part 3 Exercises Annotated Facets with ggplot2 Paper published: mlr - Machine Learning in R a grim knight [cont’d] Other sites Jobs for R-users SAS blogs Building Barplots with Error Bars August 17, 2015By Chris Wetherill (This article was first published on DataScience+, and kindly contributed to R-bloggers) Bar charts are a pretty common way to represent data visually, but constructing them isn't always the most intuitive thing in the world. One way that we can construct these graphs is using R's default packages. Barplots using base R Let's start by viewing our dataframe: here we will be finding the mean miles per gallon by number of cylinders and number of gears. View(mtcars) We begin by aggregating our data by cylinders and gears and specify
needs to be set at the layer level if you are overriding the plot defaults. data A layer specific dataset - only needed if you http://docs.ggplot2.org/0.9.3.1/geom_errorbar.html want to override the plot defaults. stat The statistical transformation to use on the data for this layer. position The position adjustment to use for overlappling points on https://stat.ethz.ch/pipermail/r-help/2000-November/009029.html this layer ... other arguments passed on to layer. This can include aesthetics whose values you want to set, not map. See layer for more details. Description error bars Error bars. Aesthetics geom_errorbar understands the following aesthetics (required aesthetics are in bold): x ymax ymin alpha colour linetype size width Examples # Create a simple example dataset df # Because the bars and errorbars have different widths # we need to specify how wide the objects we are dodging are dodge Mapping a variable to y error bars in and also using stat="bin". With stat="bin", it will attempt to set the y value to the count of cases in each group. This can result in unexpected behavior and will not be allowed in a future version of ggplot2. If you want y to represent counts of cases, use stat="bin" and don't map a variable to y. If you want y to represent values in the data, use stat="identity". See ?geom_bar for examples. (Deprecated; last used in version 0.9.2) p Mapping a variable to y and also using stat="bin". With stat="bin", it will attempt to set the y value to the count of cases in each group. This can result in unexpected behavior and will not be allowed in a future version of ggplot2. If you want y to represent counts of cases, use stat="bin" and don't map a variable to y. If you want y to represent values in the data, use stat="identity". See ?geom_bar for examples. (Deprecated; last used in version 0.9.2) p + geom_bar(position=dodge) + geom_errorbar(l
That's certainly a simpler solution. It might be worth wrapping a few arrows() calls up in some kind of simple errorbar function (just so it's slightly more accessible to newcomers). The only two things my function did that these calls don't do is (1) to size the plot appropriately so the upper and lower limits of the errors are within the plot, (2) to draw the segments/arrows first so that one can add points with pch=19 and bg=par("bg") to get open points without lines going through them. On Thu, 9 Nov 2000, Emmanuel Paradis wrote: > At 14:07 08/11/00 -0500, Ben Bolker wrote: > > > > I'm going to take the liberty of reposting this function, which is based > >on one that Bill Venables posted a while back. I've tweaked with it a bit > >to add functionality. It will do horizontal bars or vertical bars, but > >not (yet) both simultaneously (the hardest thing about that is deciding on > >what format you want the data supplied in). > > > > There's also a help file supplied below. > > > > Should this (after appropriate tweaking/polishing/testing/revision) go > >into the main R code base? It seems like a pretty basic function to me > >... > > [...] > > >On Wed, 8 Nov 2000, Mike Beddo wrote: > > > >> I'm a newcomer to R. I can't seem to find any documentation how to add > >> error bars to points in scatter plots. I guess I could plot the points, > >> then compute and plot line segments in the X and/or Y directions to > >> represent the errors? > >> > >> - Mike > > I think using arrows(..., code=3, angle=90, ...) is quite simple, e.g.: > > x <- rnorm(10) > y <- rnorm(10) > se.x <- runif(10) > se.y <- runif(10) > plot(x, y, pch=22) > arrows(x, y-se.y, x, y+se.y, code=3, angle=90, length=0.1) > arrows(x-se.x, y, x+se.x, y, code=3, angle=90, length=0.1) > > The first arrows() draws the error bars for y, and the second one for x, > 'code=3' draws a head at both ends of the arrow, 'angle=' is the angle of > the head with the main axis of the arrow, and 'length=' is the length of > the head. You can also add usual