12.4 Using a Different Palette for a Discrete Variable

12.4.1 Problem

You want to use different colors for a discrete mapped variable.

12.4.2 Solution

Use one of the scales listed in Table 12.1.

Table 12.1: Discrete fill and color scales
Fill scale Color scale Description
scale_fill_discrete() scale_colour_discrete() Colors evenly spaced around the color wheel (same as hue)
scale_fill_hue() scale_colour_hue() Colors evenly spaced around the color wheel (same as discrete)
scale_fill_grey() scale_colour_grey() Greyscale palette
scale_fill_viridis_d() scale_colour_viridis_d()
 Viridis palettes
scale_fill_brewer() scale_colour_brewer() ColorBrewer palettes
scale_fill_manual() scale_colour_manual() Manually specified colors

In the example here we’ll use the default palette (hue), a viridis palette, and a ColorBrewer palette (Figure 12.6):

Default palette (using hue; top); A viridis palette (middle); A ColorBrewer palette (bottom)Default palette (using hue; top); A viridis palette (middle); A ColorBrewer palette (bottom)Default palette (using hue; top); A viridis palette (middle); A ColorBrewer palette (bottom)

Figure 12.6: Default palette (using hue; top); A viridis palette (middle); A ColorBrewer palette (bottom)

12.4.3 Discussion

Changing a palette is a modification of the color (or fill) scale: it involves a change in the mapping from numeric or categorical values to aesthetic attributes. There are two types of scales that use colors: fill scales and color scales.

With scale_fill_hue(), the colors are taken from around the color wheel in the HCL (hue-chroma-lightness) color space. The default lightness value is 65 on a scale from 0–100. This is good for filled areas, but it’s a bit light for points and lines. To make the colors darker for points and lines, as in Figure 12.7 (right), set the value of l (luminance/lightness):

Points with default lightness (left); With lightness set to 45 (right)Points with default lightness (left); With lightness set to 45 (right)

Figure 12.7: Points with default lightness (left); With lightness set to 45 (right)

The viridis package provides a number of color scales that make it easy to see differences across your data. See Recipe 12.3 for more details and examples.

The ColorBrewer package provides a number of palettes. You can generate a graphic showing all of them, as shown in Figure 12.8:

All the ColorBrewer palettes

Figure 12.8: All the ColorBrewer palettes

The ColorBrewer palettes can be selected by name. For example, this will use the “Oranges” palette (Figure 12.9):

Using a named ColorBrewer palette

Figure 12.9: Using a named ColorBrewer palette

You can also use a palette of greys. This is useful for print when the output is in black and white. The default is to start at 0.2 and end at 0.8, on a scale from 0 (black) to 1 (white), but you can change the range, as shown in Figure 12.10.

Using the default grey palette (left); A different grey palette (right)Using the default grey palette (left); A different grey palette (right)

Figure 12.10: Using the default grey palette (left); A different grey palette (right)

12.4.4 See Also

See Recipe 10.4 for more information about reversing the legend.

To select colors manually, see Recipe 12.5.

For more about viridis, see https://cran.r-project.org/web/packages/viridis/vignettes/intro-to-viridis.html. For more about ColorBrewer, see http://colorbrewer2.org.