How to Add Error Bars to Charts in R

Spread the love

This article provides a comprehensive tutorial on how to add error bars to charts in the R programming language. Error bars are graphical representations of the variability of data and are used on graphs to indicate the error or uncertainty in a reported measurement. Error bars often represent one standard deviation of uncertainty, one standard error, or a particular percentile of the data. In this tutorial, we will focus on adding error bars to bar charts and scatter plots.

Understanding Error Bars

Error bars are a graphical representation that provides a visual impression of the variability of data on a chart. They are used to show the variability of the data, give a general sense of statistical accuracy, and indicate the reliability of the reported average.

There are different types of error bars based on what kind of statistic they represent, such as Standard Error, Standard Deviation, or Confidence Interval. The choice of error bar depends on the kind of data and the intended interpretation.

Adding Error Bars to Bar Charts

Let’s first look at how to add error bars to bar charts using ggplot2. For this tutorial, we’ll be using R’s built-in ‘mtcars’ dataset. We’ll plot the mean miles per gallon (mpg) for each number of cylinders (cyl) and add error bars representing the standard error.

First, we calculate the mean and standard error for each group:


data_summary <- mtcars %>%
  group_by(cyl) %>%
  summarise(mean_mpg = mean(mpg), se_mpg = sd(mpg)/sqrt(n()), .groups = 'drop')

In this code, we use the group_by() function to group the data by the number of cylinders, and then summarise() to calculate the mean mpg and the standard error of mpg for each group. The .groups = 'drop' argument is used to return a data frame.

Now let’s create a bar chart with error bars:

ggplot(data_summary, aes(x=factor(cyl), y=mean_mpg)) +
  geom_bar(stat="identity", fill="skyblue", width=0.7) +
  geom_errorbar(aes(ymin=mean_mpg-se_mpg, ymax=mean_mpg+se_mpg), 
                size=1.2) +
  labs(x="Number of Cylinders", y="Mean MPG") +

Here, geom_bar() is used to create the bar chart, with stat="identity" telling ggplot2 to use the y values exactly as they are. geom_errorbar() is used to add the error bars, with ymin and ymax defined to represent the range of the error bars. The width argument controls the width of the error bars, while colour and size control the color and size of the error bars.

Adding Error Bars to Scatter Plots

Now, let’s add error bars to a scatter plot. For this example, we’ll use the ‘ToothGrowth’ dataset, built-in to R, which contains information about the growth of guinea pig’s teeth.

Let’s first calculate the mean and standard error of tooth growth for each supplement type (VC or OJ) and dosage:

data_summary <- ToothGrowth %>%
  group_by(supp, dose) %>%
  summarise(mean_len = mean(len), se_len = sd(len)/sqrt(n()), .groups = 'drop')

Now, let’s create a scatter plot with error bars:

ggplot(data_summary, aes(x=dose, y=mean_len, color=supp)) +
  geom_point(size=4) +
  geom_errorbar(aes(ymin=mean_len-se_len, ymax=mean_len+se_len), 
                size=1.2) +
  labs(x="Dosage", y="Mean Tooth Length") +

In this code, geom_point() is used to create the scatter plot, and geom_errorbar() adds the error bars. The color of the points is determined by the supplement type, allowing us to compare the two groups easily.


Error bars are a vital tool in data visualization to represent the variability or uncertainty of data. This article provided an in-depth tutorial on adding error bars to both bar charts and scatter plots in R using the ‘ggplot2’ package. By incorporating error bars into your plots, you provide a more complete picture of your data, facilitating better understanding and interpretation.

Posted in RTagged

Leave a Reply