r functions: ggplot barplot with errorbars

Summary

The best way to create a barplot with errorbars using ggplot in R is not obvious. I'll show a super simple solution.

example R plot made using the below function and built-in data.frame

The best way to create a barplot with errorbars using ggplot in R is not obvious. Below is a super simple solution. As it is self-explanatory, this will be my shortest entry ever. cheers!

update 2013.12.10: the code was modified slightly by adding position_dodge() to make the error lines be smaller than the bars and the theme has been cleaned up to remove the default gray background.

update 2013.12.28: wrapped the script into a function (to generalize it)—pass data as a data.frame and x/y/fill as column name strings.

download ggplot_barplot.R

R / S+
  1. ggplotErrorBarplot <-function(data,x,y,fill,...){
  2.         # makes a barplot with errorbars using ggplot, variable inputs are strings
  3.         # biafra ahanonu, updated: 2013.12.28
  4.  
  5.         # load ggplot
  6.         require(ggplot2)
  7.  
  8.         # create functions to get the lower and upper bounds of the error bars
  9.         stderr <- function(x){sqrt(var(x,na.rm=TRUE)/length(na.omit(x)))}
  10.         lowsd <- function(x){return(mean(x)-stderr(x))}
  11.         highsd <- function(x){return(mean(x)+stderr(x))}
  12.  
  13.         # create a ggplot
  14.         ggplot(data,aes_string(x=x,y=y,fill=fill))+
  15.         # first layer is barplot with means
  16.         stat_summary(fun.y=mean, geom="bar", position=position_dodge(), colour='white')+
  17.         # second layer overlays the error bars using the functions defined above
  18.         stat_summary(fun.y=mean, fun.ymin=lowsd, fun.ymax=highsd, geom="errorbar", position=position_dodge(.9),color = 'black', size=.5, width=0.2)+
  19.         theme(line = element_blank(),panel.background = element_rect(fill = "white", colour = NA))
  20. }
  21.  

-biafra
bahanonu [at] alum.mit.edu

more articles to enjoy:

designing icons
25 may 2012 | design

How do you design an icon for a website? This question arose once I'd finished writing the back-end of this website. There is a great [...]book called Creative Workshop: 80 Challenges to Sharpen Your Design Skills that helped me answer this question.

This essay focuses on the icon I designed for the website and the thinking process behind it.

the origin and evolution of life
01 january 2020 | origin and evolution of life

I am starting a new blog focused on the Origin and Evolution of Life. Here is the first post.[...]

week 1 | go time
12 june 2012 | singapore

Wow, what a week. Ran around Hong Kong, learned a couple new things in the lab, meet a bunch of awesome MIT/SUTD students, went clubbing tw[...]ice, ate a different type (Indian, Indonesian, Muslim, etc.) of food each meal, wandered around Singapore several of the nights and so much more. To top it all off, I was able to learn a ton about Singapore's culture. This place is awesome.

©2006-2025 | Site created & coded by Biafra Ahanonu | Updated 21 October 2024
biafra ahanonu