How To Fix The R Error: discrete value supplied to continuous scale

Hey there, fellow R enthusiasts! Have you ever tried to create a plot in R, only to be met with a cryptic error message that says “Discrete value supplied to continuous scale”? Don’t worry, you’re not alone! This error message can be frustrating and confusing, but fear not – we’re here to help you understand what it means and how to fix it. In this article, we’ll explore the common causes of the “Discrete value supplied to continuous scale” error message and provide some tips and tricks for resolving it.

When Does This Error Happen?

The “discrete value supplied to continuous scale” message occurs when using the ggplot() function along with the scale__continuous()scale function to specify a specific scale for a graph.

# this error is related to the ggplot2 library, so we need to load it (if you haven't already)

# r error discrete value supplied to continuous scale
> a = data.frame(x = 1:10, y = c("cat", "dog", "bat", "cow", "rat"))
> ggplot(a, aes(x, y)) + geom_point()

In this example of the basic usage of ggplot(), the scale function is not used. However, it does produce a successful graph of the data frame. Getting this message requires including the scale function and doing so incorrectly. That turns out to be the key to fixing the continuous variable problem and that is using the scale function correctly.

What Caused The Error?

The “discrete value supplied to continuous scale” message is caused by erroneous use of the scale function along with ggplot().

# discrete value supplied to continuous scale r error
> a = data.frame(x = 1:10, y = c("cat", "dog", "bat", "cow", "rat"))
> ggplot(a, aes(x, y)) + geom_point() + scale_y_continuous(limits = c(0, 15))
Error: Discrete value supplied to continuous scale

The mistake in this example that leads to the error message is trying to create a continuous scale for the “y” axis. The problem is that the “y” vector is a discrete variable consisting of words, i.e. a character vector or categorical variable, not a numeric vector, which would create continuous data. This means that you are trying to create a continuous value for a discrete value axis. It does not work resulting in our message.

How to Fix This Error – discrete value supplied to continuous scale

The “discrete value supplied to continuous scale” message can be fixed but making sure that at least one of the position scales in the data frame is a continuous value rather than a discrete scale and applying the scale function to that character vector to make it a numeric vector.

# discrete value supplied to continuous scale solution
> a = data.frame(x = 1:10, y = c("cat", "dog", "bat", "cow", "rat"))
> ggplot(a, aes(x, y)) + geom_point() + scale_x_continuous(limits = c(0, 15))

As you can see from this example using “x” instead of “y” in the scale function fixes the problem by supplying a numeric value list instead of characters. This factor makes all the difference.

# discrete value continuous scale r solution
> a = data.frame(x = 1:10, y = c(1:5))
> ggplot(a, aes(x, y)) + geom_point() + scale_y_continuous(limits = c(0, 7))

The other option as seen above is to turn “y” into a numeric list as illustrated above. The one problem with this solution is that the dataset graph, scatter plot, box plot, or bar chart is losing some of its meaning. This is because the model no longer has the categorical variable labels that it previously did.

A Deeper Look at Potential Causes of the Error

The “Discrete value supplied to continuous scale” error message is a common issue that can occur when creating plots in R. This error message indicates that there is a mismatch between the data type or scale type of a variable and the plotting function used to create the plot. There are several potential causes of this error message, including using a continuous scale when the data is discrete, using the wrong data type for a variable, and inconsistent data formatting. By understanding these potential causes, you can more easily diagnose and resolve the “Discrete value supplied to continuous scale” error message in R.

Here are some potential causes of the “Discrete value supplied to continuous scale” error message in R:

  1. Using a continuous scale when the data is discrete:
    • If the data is categorical or discrete, such as a factor or character variable, it should be plotted using a discrete scale, such as a factor or date scale. Using a continuous scale, such as a numeric or date-time scale, can result in the “Discrete value supplied to continuous scale” error message.
  2. Using the wrong data type for a variable:
    • Simple enough – if there’s a mismatch between the data type and the scale, you’ll get an error message.
  3. Mismatched data types between variables:
    • Similar to error #2 – if you’re trying to plot different variables in a multi-variable plot on the same scale, you’ll get an error.
  4. Inconsistent data formatting:
    • Formatting variances can throw the code off…
  5. Using the wrong plotting function:
    • The function needs to match the data type you’re trying to plot.

By understanding these potential causes of the “Discrete value supplied to continuous scale” error message in R, you can more easily diagnose and resolve the issue when it occurs.

Strategies for Resolving the Error

If you encounter the “Discrete value supplied to continuous scale” error message in R, there are several strategies you can use to resolve the issue. Here are some options to consider:

  1. Converting discrete data to a factor or character type:
    • If the data is discrete convert it to the appropriate data type using the as.factor() or as.character() functions, respectively.
  2. Changing the scale type to a discrete scale, such as a factor or date scale:
  3. Using the appropriate plotting function for the data type:

By using these strategies, you can effectively resolve the “Discrete value supplied to continuous scale” error message in R and create accurate and informative plots.


The “discrete value supplied to continuous scale” error message is more of a minor nuisance than a serious problem. It is simply a matter of using the wrong vector from the data frame. Correcting that one continuous data mistake in your plotting code solves the problem in a simple and easy manner.

R Error: discrete value supplied to continuous scale

Key Takeaways

  • An error arises when one tries to plot discrete data on a continuous scale in R.
  • Pinpointing the causes is key to resolving graphing errors and improving data visualization.
  • A step-by-step tutorial can equip practitioners with techniques to avoid common plotting pitfalls.

Understanding Common Visualization Errors

The “discrete value supplied to continuous scale” error often appears during the visualization process with R’s ggplot2 package. This specific error is encountered when there is a mismatch between the data types and the expected scale in a graph. Here’s when and why this may occur:

  • Using ggplot2: While constructing a plot, a user might inadvertently use discrete data, such as category names, with functions designed for continuous data, like scale_continuous().
  • Attempting to Reproduce the Error: Suppose a data frame a contains numeric data in one column and categorical data in another. A plot request using ggplot(a, aes(x, y)) + geom_point() without the appropriate scale function can still succeed. However, including a continuous scale function for the categorical y axis triggers an error.
  • Identifying the Source: The crux of the issue lies in correctly applying the scale function that corresponds to the data type; for categorical variables, one should use scale_discrete().

To illustrate, if a user tries to generate a plot where the y-axis is intended to display categorical values like animal names (e.g., “cat”, “dog”), yet the scale function applied assumes continuous values, ggplot2 will prompt with this error. The solution is straightforward: ensuring the scale function aligns with the nature of the data, using scale_discrete() for categorical data and scale_continuous() for numerical data.

What Caused The Error?

When utilizing the ggplot2 package in the R programming language, a common misstep involves assigning a continuous scale to a factor or character data type on the y-axis. The scale_y_continuous function expects numerical input to produce a gradient of values. However, providing it with categorical items, such as a list of different animal names, disrupts the expected data format and triggers an error.

To illustrate:

  • Incorrect Code Snippet
# Categorical y-axis data is used with a function expecting numerical values
ggplot(data_frame, aes(x_value, y_category)) + geom_point() + scale_y_continuous(limits = c(min_val, max_val))

This is a result of the conflict between discrete and continuous data expectations within the scale function. The solution involves switching to an appropriate scale function that handles discrete values, like scale_y_discrete, or converting the data to a numerical format that aligns with a continuous scale.

Resolving Graphical Representation Issues

When constructing a scatter plot with consistent scales in R, encountering an error such as “discrete value supplied to continuous scale” is common when discrete data is used in place of continuous data. To rectify this issue, ensure that your data set is structured to include at least one continuous scale.

Example Fix:

# Incorrect Plotting
a = data.frame(x = 1:10, y = c("cat", "dog", "bat", "cow", "rat"))
ggplot(a, aes(x, y)) + geom_point() + scale_x_continuous(limits = c(0, 15))

# Correct Plotting
b = data.frame(x = 1:10, y = 1:5)
ggplot(b, aes(x, y)) + geom_point() + scale_y_continuous(limits = c(0, 7))

In these scenarios, adjusting the scale to apply to a numeric vector is often the solution.

Steps to Correct the Error:

  • Use numeric values in the axis scale functions. For example, employ scale_x_continuous when x is a continuous variable.
  • If a variable, like y in the figure, is intended as a category label, it should be converted to a numeric sequence to plot a scatter plot successfully.

Keep in mind, converting categorical data to numeric for plotting purposes may lead to a loss of meaningful labels and, subsequently, interpretation. However, this transformation is essential to generate the visual representation and fix the error.

Exploring the Root of the Plotting Error

When working with graphical representations in R, sometimes one might encounter an error stating a discrete value has been wrongfully assigned to a continuous scale. This essentially implies a conflict between the way data is classified within the dataset and the method expected by the graphing function. The following points highlight common triggers for this issue:

  • Mismatch of Scale Typing: Graphs depicting categories or distinct items require scales that handle non-continuous data such as factors or dates. Assigning these types of data to scales meant for continuous values like numeric or date-time can provoke the error in question.
  • Data Type Discrepancy: The error may surface if the data type of the variable does not align with the expected scale type; a numeric vector plotted on a categorical axis, for instance, incurs a conflict.
  • Divergent Data Types in Multiple Variables: Attempting to represent multiple variables that possess differing data types on a similar scale can lead to the same problem.
  • Variability in Data Presentation: If data within a frame is inconsistently formatted, it may confuse the plotting routine and result in the said error.
  • Inappropriate Plotting Function: Employing a plotting function that does not correspond with the type of data intended for visualization, such as using as.numeric() instead of as.factor() for categorical data, will create an impedance.

Understanding and identifying these factors can significantly aid in averting and troubleshooting the “Discrete value supplied to continuous scale” error, ensuring the data visualization process is smooth and error-free.

Approaches to Address Plotting Errors

Addressing Summation Issues

When users face difficulties with mismatched data types in R, particularly when a discrete variable is incorrectly mapped to a continuous scale, corrective actions are straightforward. This section will outline actionable steps to rectify such errors when using functions like scale_y_continuous or scale_x_continuous.

  • Adjust Data Types:
    In cases where a categorical variable should be on the discrete scale, transform it using as.factor() or as.character().
  • Modify Scale Functions:
    Employ discrete scaling functions like scale_fill_manual, which can accommodate categorical data directly.
  • Use Compatible Plot Functions:
    Selecting plotting functions that are intended for the specific data type can prevent conflicts between numeric values and expected continuous variables.

Ensuring that the data type matches the expected input for functions like theme and element_text can lead to error-free and visually appealing graphics. This harmonization between data type and function choice is key to successful data visualization in R.

Common Questions

Transforming Discrete Data for Continuous Scales in ggplot2

To change discrete data into a continuous scale in ggplot2, you can use the as.numeric() function to convert factors to numeric values. In the ggplot syntax, include this conversion within the aes() function.


ggplot(data, aes(x=as.numeric(discrete_variable), y=value)) + ...

Meaning of ‘Discrete Value to Continuous Scale’ Error in geom_bar

The error message “Discrete value supplied to continuous scale” typically occurs in ggplot2 when you assign a discrete variable to a scale that expects continuous data. Ensure that your mappings match the expected data type of the scale.


  • Using factors or character variables for continuous aesthetics.
  • Incorrect use of a scale function intended for continuous data on discrete data.

Discrete vs. Continuous Scales in Visualizations

Discrete and continuous scales serve different functions in data visualization. A discrete scale categorizes non-overlapping variables, while a continuous scale displays a range with infinite possibilities between any two points.

Discrete Scale Examples:

  • Categories like gender, color, or brands.
  • Bar charts or pie charts.

Continuous Scale Examples:

  • Measurements like height, weight, or temperature.
  • Line graphs or scatter plots.

Mapping a Discrete Variable with Size in Plots

It is generally advised not to use size for mapping discrete variables as it can be misleading. Size is a continuous aesthetic and might imply a quantitative relationship where none exists.

Best Practices:

  • Use color or fill: These are more suitable for categorical differences.
  • Clarity: Choose clarity over aesthetics to avoid misinterpretation.

Interpreting ‘Continuous Value to Discrete Scale’ Warning in R

The warning “Continuous value supplied to discrete scale” in R suggests that a continuous variable has been mistakenly mapped to a discrete scale. Check your ggplot2 code for any mistyped mappings and correct the scale to match the data type.

Quick Fix:

  • Revise scale_x_discrete() to scale_x_continuous() or vice versa, depending on the context.

Changing the X-axis Scale from Discrete to Continuous in ggplot2

To convert a discrete x-axis to a continuous one in ggplot2, ensure that the variable is numeric and use the appropriate continuous scale function.


ggplot(data, aes(x=as.numeric(discrete_variable))) +
  geom_line() +
Scroll to top
Privacy Policy