Creates a diverging scale with defined centre / midpoint. Similar to rescale_center(), key difference is
the output palette / range is piecewise linear (with respect to breaks) and the entire output range is
always used.
Centring vs Diverging
The plot below shows how rescale_center() and rescale_diverge() distort the scale output. The input
scale in this case is power_scale(limits = -36:4); this scale is centred and diverged at 0.
The plot on the left shows the mapping between the input -36:4 (x axis) and output 0:1 (y axis). The
plot on the right is a linear representation of the left and is the space that rdeck works in. The input
-36:4 transformed with power_trans() and rescaled to 0:1. This plot has been included because it's
(hopefully) easier to understand.
In the unaltered scale, we see that 0 is mapped to 0.75 in the output, which would be the colour at 0.75
on a colour ramp (e.g. scales::colour_ramp(viridis::viridis(256))(0.75)).
When applying rescale_center() we see that gradient of function has become y = 2/3x in the linear
scale, which is 2/3 * scales::rescale(trans$transform(x)) for our data. For rescale_diverge()
we see a piecewise scale with the break at center; both sides of center have a different gradient
(y = 2/3x and y = 2x - 1) and the full range of y is used.
The colour ramp plot shows the effect rescaling has on a colour palette (in this case viridis).

See also
Other scales:
rescale_center(),
scale_category(),
scale_identity(),
scale_linear(),
scale_log(),
scale_power(),
scale_quantile(),
scale_quantize(),
scale_symlog(),
scale_threshold()
Examples
# create a diverging linear scale at 0
linear_diverged <- rescale_diverge(
scale_color_linear(col, limits = -5:10),
center = 0
)
# create a diverging log scale at 10
log_diverged <- rescale_diverge(
scale_log(col, limits = 1:1000),
center = 10
)