How to Plot Line of Best Fit in R (With Examples)


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.32x.

Example 2: Plot Line of Best Fit in ggplot2

The following code shows how to plot a line of best fit for a simple linear regression model using the ggplot2 data visualization package:

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()

Additional Resources

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

How to Perform Simple Linear Regression in R
How to Perform Multiple Linear Regression in R
How to Interpret Regression Output in R

Leave a Reply

Your email address will not be published. Required fields are marked *