You can use the **geom_abline()** function and other similar **geom** functions to add straight lines to plots in ggplot2.

Here are the most common ways to use these functions:

**Method 1: Use geom_abline() to Add Line with Slope and Intercept**

**ggplot(df, aes(x, y)) +
geom_point() +
geom_abline(slope=3, intercept=15)
**

**Method 2: Use geom_vline() to Add Vertical Line**

ggplot(df, aes(x=xvar, y=yvar)) + geom_point() + geom_vline(xintercept=5)

**Method 3: Use geom_hline() to Add Horizontal Line**

ggplot(df, aes(x=xvar, y=yvar)) + geom_point() + geom_hline(yintercept=25)

**Method 4: Use geom_smooth() to Add Regression Line**

ggplot(df, aes(x=xvar, y=yvar)) + geom_point() + geom_smooth(method='lm')

The following examples show how to use each of these methods in practice with the following data frame in R:

#create data frame df <- data.frame(x=c(1, 2, 3, 3, 5, 7, 9), y=c(8, 14, 18, 25, 29, 33, 25)) #view data frame df x y 1 1 8 2 2 14 3 3 18 4 3 25 5 5 29 6 7 33 7 9 25

**Example 1: Use geom_abline() to Add Line with Slope and Intercept**

The following code shows how to use **geom_abline()** to add a straight line to a scatterplot with a slope of 3 and an intercept of 15:

library(ggplot2) #create scatterplot and add straight line with specific slope and intercept ggplot(df, aes(x=x, y=y)) + geom_point() + geom_abline(slope=3, intercept=15)

**Example 2: Use geom_vline() to Add Vertical Line**

The following code shows how to use **geom_vline()** to add a vertical line to a scatterplot at x=5:

library(ggplot2) #create scatterplot and add vertical line at x=5 ggplot(df, aes(x=x, y=y)) + geom_point() + geom_vline(xintercept=5)

**Example 3: Use geom_hline() to Add Horizontal Line**

The following code shows how to use **geom_hline()** to add a horizontal line to a scatterplot at y=25:

library(ggplot2) #create scatterplot and add horizontal line at y=25 ggplot(df, aes(x=x, y=y)) + geom_point() + geom_hline(yintercept=25)

**Example 4: Use geom_smooth() to Add Regression Line**

The following code shows how to use **geom_smooth()** to add a fitted regression line to a scatterplot:

library(ggplot2) #create scatterplot and add fitted regression line ggplot(df, aes(x=x, y=y)) + geom_point() + geom_smooth(method='lm', se=FALSE)

**Note**: The argument **se=FALSE** tells ggplot2 not to display shaded lines for standard error estimates.

**Additional Resources**

The following tutorials explain how to perform other commonly used operations in ggplot2:

How to Adjust Line Thickness in ggplot2

How to Set Axis Limits in ggplot2

How to Remove Gridlines in ggplot2

How to Change Background Color in ggplot2