Re-centres a scale to have a defined centre / midpoint. This is the rdeck equivalent of
scales::rescale_mid()
.
centring an rdeck scale creates a new scale with the output palette or range centred at center
.
This is similar to creating a diverging scale; the key difference is that the output palette or range
remains linear (with respect to the breaks) and is truncated on the side that is closest to center
.
This is useful in creating difference layers, where the output palette or range represents distance
from the centre.
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_diverge()
,
scale_category()
,
scale_identity()
,
scale_linear()
,
scale_log()
,
scale_power()
,
scale_quantile()
,
scale_quantize()
,
scale_symlog()
,
scale_threshold()
Examples
# create a sqrt scale that is centered at 0
sqrt_centered <- rescale_center(
scale_color_power(col, limits = -36:4),
center = 0
)
# create a discrete symlog scale that is centered at 5
symlog_centered <- rescale_center(
scale_color_threshold(col, limits = -100:100, breaks = breaks_symlog()),
center = 5
)