# How to Plot Line of Best Fit in R?

To plot a line of best fit in R, use the lm() function to fit a linear model to the data, then plot the model using the plot() function. You can also add the line of best fit to the existing plot using the abline() function. The line of best fit can be used to visualize the relationships between variables and can be used to make predictions about future data points.


You can use one of the following methods to plot a line of best fit in R:

Method 1: Plot Line of Best Fit in Base R

#create scatter plot of x vs. y
plot(x, y)

#add line of best fit to scatter plot
abline(lm(y ~ x))

Method 2: Plot Line of Best Fit in ggplot2

library(ggplot2)

#create scatter plot with line of best fit
ggplot(df, aes(x=x, y=y)) +
    geom_point() +
    geom_smooth(method=lm, se=FALSE)

The following examples show how to use each method in practice.

Example 1: Plot Line of Best Fit in Base R

The following code shows how to plot a line of best fit for a simple linear regression model using base R:

#define data
x <- c(1, 2, 3, 4, 5, 6, 7, 8)
y <- c(2, 5, 6, 7, 9, 12, 16, 19)

#create scatter plot of x vs. y
plot(x, y)

#add line of best fit to scatter plot
abline(lm(y ~ x))

Feel free to modify the style of the points and the line as well:

#define data
x <- c(1, 2, 3, 4, 5, 6, 7, 8)
y <- c(2, 5, 6, 7, 9, 12, 16, 19)

#create scatter plot of x vs. y
plot(x, y, pch=16, col='red', cex=1.2)

#add line of best fit to scatter plot
abline(lm(y ~ x), col='blue' , lty='dashed')

We can also use the following code to quickly calculate the line of best fit:

#find regression model coefficients
summary(lm(y ~ x))$coefficients

              Estimate Std. Error   t value     Pr(>|t|)
(Intercept) -0.8928571  1.0047365 -0.888648 4.084029e-01
x            2.3095238  0.1989675 11.607544 2.461303e-05

The line of best fit turns out to be: y = -0.89 + 2.31x.

Example 2: Plot Line of Best Fit in ggplot2

library(ggplot2)

#define data
df <- data.frame(x=c(1, 2, 3, 4, 5, 6, 7, 8),
                 y=c(2, 5, 6, 7, 9, 12, 16, 19))

#create scatter plot with line of best fit
ggplot(df, aes(x=x, y=y)) +
    geom_point() +
    geom_smooth(method=lm, se=FALSE)

Feel free to modify the aesthetics of the plot as well:

library(ggplot2)

#define data
df <- data.frame(x=c(1, 2, 3, 4, 5, 6, 7, 8),
                 y=c(2, 5, 6, 7, 9, 12, 16, 19))

#create scatter plot with line of best fit
ggplot(df, aes(x=x, y=y)) +
    geom_point(col='red', size=2) +
    geom_smooth(method=lm, se=FALSE, col='purple', linetype='dashed') +
    theme_bw()

The following tutorials explain how to perform other common operations in R:

x