Often you may want to plot the mean and standard deviation by group in ggplot2.

Fortunately this is easy to do using the **geom_point()** and **geom_errorbar()** functions in ggplot2.

The following example shows how to use these functions to create the following plot that shows the mean and standard deviation of points scored by various basketball teams:

**Example: Plot Mean and Standard Deviation in ggplot2**

Suppose we have the following data frame in R that contains information on the number of points scored by basketball players on three different teams:

**#create data frame
df <- data.frame(team=rep(c('A', 'B', 'C'), each=6),
points=c(8, 10, 12, 12, 14, 15, 10, 11, 12,
18, 22, 24, 3, 5, 5, 6, 7, 9))
#view head of data frame
head(df)
team points
1 A 8
2 A 10
3 A 12
4 A 12
5 A 14
6 A 15**

We can use functions from the **dplyr** package to quickly calculate the mean and standard deviation of points scored by players on each team:

**library(dplyr)
#calculate mean and sd of points by team
df_mean_std <- df %>%
group_by(team) %>%
summarise_at(vars(points), list(mean=mean, sd=sd)) %>%
as.data.frame()
#view results
df_mean_std
team mean sd
1 A 11.833333 2.562551
2 B 16.166667 6.013873
3 C 5.833333 2.041241
**

Lastly, we can use the following functions from **ggplot2** to visualize the mean and standard deviation of points scored by players on each team:

**library(ggplot2)
#plot mean and standard deviation of points by team
ggplot(df_mean_std , aes(x=team, y=mean)) +
geom_errorbar(aes(ymin=mean-sd, ymax=mean+sd), width=.3) +
geom_point(size=2)**

The resulting plot shows the mean and standard deviation of points scored by players on each team.

The circles represent the mean values and the length of the bars above and below each circle represent the standard deviation.

**Note**: The **width** argument in the **geom_errorbar()** function specifies how wide the error bars should be. Feel free to modify this value to adjust the width of the error bars in the plot.

**Additional Resources**

The following tutorials explain how to perform other common tasks in ggplot2:

How to Add Caption to ggplot2 Plots

How to Change Font Size in ggplot2

How to Remove a Legend in ggplot2

How to Rotate Axis Labels in ggplot2