Skip to content
Multiple Fill and Color Scales in `ggplot2`
R
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
R Changes aes_params Jul 24, 2019
inst
man
.Rbuildignore
.gitignore
.travis.yml
.zenodo.json
DESCRIPTION
LICENSE.md
NAMESPACE
NEWS.md
README.Rmd Preparing for CRAN Jul 5, 2019
README.md
_pkgdown.yml
cran-comments.md
ggnewscale.Rproj

README.md

ggnewscale

Travis build statusDOICRAN statusSay Thanks!

ggnewscale tries to make it painless to use multiple color and fill scales in ggplot2. It’s very experimental, so use at your own risk!

For another way of defining multiple scales, you can also try relayer.

Installation

You can install ggnewscale from CRAN with:

install.packages("ggnewscale")

Or the development version with:

# install.packages("devtools")
devtools::install_github("eliocamp/ggnewscale")

Usage

The main function is new_scale() and its aliases new_scale_color() and new_scale_fill(). When added to a plot, every geom added after them will use a different scale.

As an example, let’s overlay some measurements over a contour map of topography using the beloved volcano.

library(ggplot2)
library(ggnewscale)
# Equivalent to melt(volcano)
topography <- expand.grid(x = 1:nrow(volcano),
                          y = 1:ncol(volcano))
topography$z <- c(volcano)

# point measurements of something at a few locations
set.seed(42)
measurements <- data.frame(x = runif(30, 1, 80),
                           y = runif(30, 1, 60),
                           thing = rnorm(30))

ggplot(mapping = aes(x, y)) +
  geom_contour(data = topography, aes(z = z, color = stat(level))) +
  # Color scale for topography
  scale_color_viridis_c(option = "D") +
  # geoms below will use another color scale
  new_scale_color() +
  geom_point(data = measurements, size = 3, aes(color = thing)) +
  # Color scale applied to geoms added after new_scale_color()
  scale_color_viridis_c(option = "A")

You can’t perform that action at this time.