How to Add a Horizontal Line to a Plot Using ggplot2

Using the ggplot2 package in R, you can add a horizontal line to a plot by adding a geom_hline layer to your existing plot. This layer takes two required arguments, the intercept for the line and the linetype. You can also customize the line by setting the color, size and other aesthetic properties as desired. This allows you to create a plot with a horizontal line that is customized to the data being plotted.


You can quickly add horizontal lines to ggplot2 plots using the geom_hline() function, which uses the following syntax:

geom_hline(yintercept, linetype, color, size)

where:

  • yintercept: Location to add line on the y-intercept.
  • linetype: Line style. Default is ‘solid’ but you can specify ‘twodash’, ‘longdash’, ‘dotted’, ‘dotdash’, ‘dashed’, or ‘blank.’
  • color: Color of the line.
  • size: Width of the line.

The following examples show how to use this function in practice.

Add a Single Horizontal Line to a Plot

The following code shows how to add a single horizontal line to a plot:

library(ggplot2)

#create data frame 
df <- data.frame(x=c(1, 3, 3, 4, 5, 5, 6, 9, 12, 15),
                 y=c(13, 14, 14, 12, 17, 21, 22, 28, 30, 31))

#create scatterplot with horizontal line at y=20
ggplot(df, aes(x=x, y=y)) +
  geom_point() +
  geom_hline(yintercept=20)

Horizontal line in ggplot2

Add Multiple Horizontal Lines to Plots

The following code shows how to add multiple horizontal lines to a plot:

library(ggplot2)

#create data frame 
df <- data.frame(x=c(1, 3, 3, 4, 5, 5, 6, 9, 12, 15),
                 y=c(13, 14, 14, 12, 17, 21, 22, 28, 30, 31))

#create scatterplot with horizontal lines at y = 10, 20, 30
ggplot(df, aes(x=x, y=y)) +
  geom_point() +
  geom_hline(yintercept=c(10, 20, 30))

Customize Horizontal Lines

The following code shows how to customize horizontal lines on a plot:

library(ggplot2)

#create data frame 
df <- data.frame(x=c(1, 3, 3, 4, 5, 5, 6, 9, 12, 15),
                 y=c(13, 14, 14, 12, 17, 21, 22, 28, 30, 31))

#create scatterplot with customized horizontal lines
ggplot(df, aes(x=x, y=y)) +
  geom_point() +
  geom_hline(yintercept=c(20, 30), linetype='dashed', color=c('blue', 'red'))

Multiple horizontal lines in ggplot2

How to Plot a Linear Regression Line in ggplot2
How to Set Axis Limits in ggplot2

x