Histograms are powerful tools in statistical analysis and data visualization. They give you a graphical representation of the frequency distribution of your data, allowing you to visualize the shape, central tendency, and variability of the dataset.
Sometimes, while working with histograms, we need to highlight a particular value or a range in our distribution. This could be the mean, the median, a custom threshold, or any other value of importance. One common way to highlight these values is by adding vertical lines to the histogram.
This guide will walk you through how to add a vertical line to a histogram in R. We’ll cover both base R methods and the ggplot2
package method.
Generating Some Example Data
For this tutorial, let’s generate a set of 1000 random numbers using the rnorm()
function in R. We will use a mean of 0 and a standard deviation of 1.
set.seed(123) # for reproducible results
data <- rnorm(1000, mean = 0, sd = 1)
Adding a Vertical Line to a Histogram Using Base R
In base R, you can add a vertical line to a plot using the abline()
function. Here’s how you can create a histogram and add a vertical line at the mean of the distribution:
hist(data, main = "Histogram with Mean", xlab = "Values", border = "black",
col = "lightblue", xlim = range(-4, 4), ylim = c(0, 300), breaks = 30)
abline(v = mean(data), col = "red", lwd = 3, lty = 2)

In the above code, hist()
creates the histogram and abline(v = mean(data))
adds the vertical line at the mean value of the data. The v
argument in abline()
is used to add a vertical line. The col
argument sets the color of the line, lwd
sets the line width, and lty
sets the line type.
Adding a Vertical Line to a Histogram Using ggplot2
The ggplot2
package is a powerful and flexible package for creating plots in R. It’s based on the Grammar of Graphics, a system for describing and building graphs.
We’ll use ggplot2
to create a histogram and add a vertical line to it. First, we need to put our data into a data frame:
# Load the ggplot2 package
library(ggplot2)
# Put the data into a data frame
df <- data.frame(value = data)
Now, we can create the histogram and add the vertical line:
ggplot(df, aes(x = value)) +
geom_histogram(aes(y = ..density..), colour = "black", fill = "lightblue", bins = 30) +
geom_vline(aes(xintercept = mean(value)), color = "red", linetype = "dashed", size = 1) +
labs(title = "Histogram with Mean", x = "Values", y = "Density") +
theme_minimal()

In the above code, geom_histogram()
creates the histogram and geom_vline(aes(xintercept = mean(value)))
adds the vertical line at the mean value of the data. The xintercept
argument in geom_vline()
is used to specify the x-position of the vertical line. The color
, linetype
, and size
arguments are used to customize the appearance of the line.
Conclusion
Adding vertical lines to a histogram is a handy technique for highlighting important values or thresholds in your data. Whether you are using base R or the ggplot2
package, adding these lines is a straightforward process.
This guide has shown you how to generate random data, how to create a histogram, and how to add a vertical line to your histogram using both base R and ggplot2
. You can use these techniques to highlight the mean, median, mode, specific quantiles, or any other value of interest in your data.