Draw ggplot2 Plot with Two Different Continuous Color Scales in R (Example)


In this article you’ll learn how to use two different color ranges in a ggplot2 plot in R.

The table of content is structured as follows:

Let’s start right away:


Creation of Example Data

The first step is to construct some data that we can use in the examples later on:

data1 <- data.frame(x1 = rnorm(500),    # Create first example data frame
                    y1 = rnorm(500))
head(data1)                             # Print head of first example data frame


table 1 data frame draw ggplot2 two different continuous color scales r


data2 <- data.frame(x2 = runif(500),    # Create second example data frame
                    y2 = runif(500))
head(data2)                             # Print head of second example data frame


table 2 data frame draw ggplot2 two different continuous color scales r


The output of the previous R programming syntax is shown in Tables 1 and 2: As you can see, we have created two different data frames, each consisting of two randomly distributed numeric variables.

Let’s draw these data!


Example: Draw ggplot2 Plot with Two Different Color Scales Using ggnewscale Package

This example explains how to create a ggplot2 plot of two data sets where each data set has its own continuous color range.

As a first step, we have to install and load the ggplot2 package:

install.packages("ggplot2")             # Install ggplot2 package
library("ggplot2")                      # Load ggplot2 package

Next, we also have to install and load the ggnewscale package:

install.packages("ggnewscale")          # Install ggnewscale package
library("ggnewscale")                   # Load ggnewscale

The ggnewscale package provides the new_scale_color function. This function can be used to create a new color scale.

Consider the R programming syntax below:

ggplot() +                              # Draw ggplot2 plot with two color scales
  geom_point(data = data1, aes(x = x1, y = y1, color = y1)) +
  scale_color_gradient(low = "green", high = "blue") +
  new_scale_color() + 
  geom_point(data = data2, aes(x = x2, y = y2, color = y2)) +
  scale_color_gradient(low = "yellow", high = "red")


r graph figure 1 draw ggplot2 two different continuous color scales r


In Figure 1 you can see that we have managed to create a ggplot2 scatterplot by running the previous R programming code.

The data of the first data set has a color scale ranging from green to blue, and the data of the second data set has a color scale ranging from yellow to red.

The two color ranges have been specified by the scale_color_gradient function, and the new_scale_color function has been used to tell R that we wanted to start a new color scale.

Looks great! 🙂


Video & Further Resources

I have recently published a video on my YouTube channel, which illustrates the R syntax of this tutorial. You can find the video below.


Please accept YouTube cookies to play this video. By accepting you will be accessing content from YouTube, a service provided by an external third party.

YouTube Content Consent Button Thumbnail

YouTube privacy policy

If you accept this notice, your choice will be saved and the page will refresh.


Furthermore, you may want to read the related tutorials which I have published on Statistics Globe. I have published numerous articles on topics such as ggplot2, groups, and lines:


Summary: At this point you should have learned how to use separate color scales in a continuous ggplot2 plot in the R programming language. In case you have any further questions, let me know in the comments section.


Subscribe to the Statistics Globe Newsletter

Get regular updates on the latest tutorials, offers & news at Statistics Globe.
I hate spam & you may opt out anytime: Privacy Policy.

Leave a Reply

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

Fill out this field
Fill out this field
Please enter a valid email address.