biscale implements a set of functions for bivariate thematic mapping based on the tutorial written by Timo Grossenbacher and Angelo Zehr as well as a set of bivariate mapping palettes from Joshua Stevens’s tutorial. The package currently supports two-by-two and three-by-three bivariate maps:

In addition to support for both two-by-two and three-by-three maps, the package also supports four methods for calculating breaks for bivariate maps.

What’s New on CRAN?

biscale v0.1.2 is out! This is a maintenance release that includes typo corrections. It does add the ability to pass objects to bi_legend()’s x and y axis label arguments, which may be useful to some users. The biscale workflow has also been tested with the new release candidate for cowplot as well as the amazing ggplot2 update and works as expected.

What’s New on the Development Version?

The development version contains a new function, bi_scale_color(), which replicates the bivariate mapping workflow for point and line data. We don’t have any sample data for it yet, but the workflow mapping point data looks like this:

# create classes
data <- bi_class(pointData, x = xvar, y = yvar, style = "quantile", dim = 3)

# create map
map <- ggplot() +
  geom_sf(data = pointData, mapping = aes(color = bi_class), show.legend = FALSE) +
  bi_scale_color(pal = "DkBlue", dim = 3) +

The creation of classes works the same way. The only difference is (a) the use of the color (or colour) argument in the aesthetic mapping for geom_sf() and the use of bi_scale_color() afterwards!

Quick Start

If the sf package is already installed, the development version of biscale can be accessed from GitHub with remotes:


Alternatively, the development version of biscale can be accessed from GitHub with remotes:

# install.packages("remotes")

Additional details, including some tips for installing sf, can be found in the Get started article.


In addition to instructions for installation, the main Get started article has:

  • a quick overview of bivariate mapping,
  • a description of the workflow for creating bivariate maps,
  • a comparison of different approaches to calculating those classes,
  • and a comparison of different color palettes for bivariate mapping.