To create a plot using a continuous scale in ggplot2, you need to define a continuous variable as the aesthetic for the x or y-axis.
While continuous scale, you might face an error, and in today’s post, we will discuss that error and how to fix it.
error: discrete value supplied to continuous scale
The error: discrete value supplied to continuous scale occurs in R when you try to plot a categorical variable on a continuous scale.
Let’s see the R code that generates the error.
library(ggplot2)
df <- data.frame(x = 1:10, y = c("bmw", "audi", "mercedez", "ferrari", "jaguar"))
ggplot(df, aes(x, y)) + geom_point() + scale_y_continuous(limits = c(0, 10))
Output
Error: Discrete value supplied to continuous scale
Please run the above code in RStudio because this is a problem of plot and visualizing the plots in RStudio is easy.
We used the ggplot2 library in the above code to plot the data.
If you have not installed the ggplot2, you can install it in RStudio and by command.
install.packages("ggplot2")
After installing, you need to import the library in your R Script.
library(ggplot2)
The code you provided is causing the same error “discrete value supplied to continuous scale” because you’re trying to plot a categorical variable “y” on a continuous scale.
Even if you set the limits of the y-axis to a range of continuous values, it doesn’t change the fact that the variable “y” is categorical.
How to fix error: discrete value supplied to continuous scale in R
There are two easy ways to fix the error.
- Use the numeric vector.
- Map the categorical variable to a discrete scale, such as a factor using the as.factor() function.
Solution 1: Use the numeric vector
library(ggplot2)
df <- data.frame(x = 1:10, y = c(1:5))
ggplot(df, aes(x, y)) + geom_point() + scale_y_continuous(limits = c(0, 10))
Output
Solution 2: Use the as.factor() function
To fix the error, use the as.factor() function and convert the variable “y” to a factor before plotting it.
The as.factor() is a built-in R function that converts an R object like a vector or a data frame column from numeric to factor.
ggplot(df, aes(x, as.factor(y))) + geom_point() + scale_y_continuous(limits = c(0, 10))
It will probably resolve the error you are facing!
Conclusion
The error: discrete value supplied to continuous scale is raised when you plot a categorical variable on a continuous scale. The easy fix is using the numeric vector or converting the vector into a factor using the as.factor() function.

Krunal Lathiya is a Software Engineer with over eight years of experience. He has developed a strong foundation in computer science principles and a passion for problem-solving. In addition, Krunal has excellent knowledge of Data Science and Machine Learning, and he is an expert in R Language.