Discrete scale constructor.

discrete_scale(aesthetics, scale_name, palette, name = waiver(),
  breaks = waiver(), labels = waiver(), limits = NULL,
  expand = waiver(), na.translate = TRUE, na.value = NA, drop = TRUE,
  guide = "legend", position = "left", super = ScaleDiscrete)



the names of the aesthetics that this scale works with


the name of the scale


a palette function that when called with a single integer argument (the number of levels in the scale) returns the values that they should take


the name of the scale - used as the axis label or the legend title


control the breaks in the guide. There are four possible types of input:

  • NULL: don't display any breaks

  • a character vector giving the breaks as they should appear on the axis or in the legend.

  • waiver() to use the default break computation.

  • a function, that when called with a single argument, a character vector giving the limits of the scale, returns a character vector specifying which breaks to display.

This parameter does not affect in any way how the data is scaled - it only affects the appearance of the legend.


NULL for no labels, waiver() for default labels (labels the same as breaks), a character vector the same length as breaks, or a named character vector whose names are used to match replacement the labels for matching breaks.


A character vector specifying the data range for the scale. and the default order of their display in guides.


a numeric vector of length two, giving a multiplicative and additive constant used to expand the range of the scales so that there is a small gap between the data and the axes. The defaults are (0,0.6) for discrete scales and (0.05,0) for continuous scales.


Unlike continuous scales, discrete scales can easily show missing values, and do so by default. If you want to remove missing values from a discrete scale, specify na.translate = FALSE.


If na.translate = TRUE, what value aesthetic value should missing be displayed as? Does not apply to position scales where NA is always placed at the far right.


Should unused factor levels be omitted from the scale? The default, TRUE, uses the levels that appear in the data; FALSE uses all the levels in the factor.


the name of, or actual function, used to create the guide. See guides for more info.


The position of the axis. "left" or "right" for vertical scales, "top" or "bottom" for horizontal scales


The super class to use for the constructed scale