Project Status: Active. codecov CRAN Status Badge CRAN Downloads DOI

‘PlotTools’ is an R package that allows the legends for continuous variables to be added to plots using the familiar functions of the default ‘graphics’ package. It also includes utility functions to manipulate irregular polygons and locate their centres.

Install the latest production version from CRAN using


or install the development version from GitHub with


Please let me know of any feature requests or bugs by opening an issue on GitHub.


# Select a colour palette
palette <- if (packageVersion("grDevices") > 3.6) hcl.colors else heat.colors

# Plot some example data
  xlab = "Speed / mph",
  ylab = "Stopping distance / ft",
  col = palette(125 + 1)[cars$dist + 1], # Colour points by distance
  cex = cars$speed / 10,                 # Size points by speed
  pch = 16,                              # Use filled circle for points
  frame.plot = FALSE

# Display legend for colour scale
  "topleft",                             # Legend position
  palette = palette,                     # Display our chosen palette
  legend = seq(125, 0, length.out = 6),  # Annotate positions on legend
  title = "Distance",
  bty = "n"                              # Don't frame with box

# Display legend for plotting symbol sizes
  "bottomright",                         # Legend position
  palette = "darkgrey",                  # Set colour - may be continuous
  horiz = TRUE,                          # Orient horizontally
  width = c(0, 2.5), scale = "pch",      # Scale for plotting character
  legend = seq(0, 25, by = 5),           # Annotate positions on legend
  x.intersp = 0,                         # Set x spacing
  bty = "n",                             # Don't frame with box
  inset = 0.05,                          # Inset from plot edges
  title = "Speed"


Cite this package as:

Smith, Martin R. (2023). PlotTools: Add continuous legends to plots. Comprehensive R Archive Network, doi:10.5281/zenodo.7803390.


Please note that the ‘PlotTools’ project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.