This small tutorial is about the mapping of values to color palettes, for treemap types “value” and “manual”.
There are two arguments that determine the mapping to color palettes: mapping
and palette
. The arguent range
does not influence this mapping, as it only defines what range of color values is shown in the legend.
The only difference between “value” and “manual” is the default value for mapping
. The “value” treemap considers palette
to be a diverging color palette (say ColorBrewer's "RdYlBu"
), and maps it in such a way that 0 corresponds to the middle color (typically white or yellow), -max(abs(values))
to the left-end color, and max(abs(values))
, to the right-end color. The “manual” treemap simply maps min(values)
to the left-end color, max(values)
to the right-end color, and mean(range(values))
to the middle color.
The following fictive data is created:
dat <- data.frame(letters=letters[1:26], x=1, y=runif(26)*16-4)
mapping=c(-max(abs(values)), 0, max(abs(values)))
treemap(dat, index="letters", vSize="x", vColor="y", type="value", palette="RdYlBu")
You see that the center color (Yl) will automatically be assigned to 0, negative values to Rd-Yl and positive to Yl-Bu. Since min(dat$y)
is -3.86
and max(dat$y)
is 11.77
, the applied mapping is c(-11.7, 0, 11.7)
. The reason why you see only -4 to 12 in the legend (and not -12 to 12), is because the range
argument is by default c(min(values), max(values)) with some pretty rounding. This can be changed of course:
treemap(dat, index="letters", vSize="x", vColor="y", type="value", palette="RdYlBu", range=c(-12,12), n = 9)
mapping=c(min(values), mean(range(values)), max(values))
treemap(dat, index="letters", vSize="x", vColor="y", type="manual", palette="RdYlBu")
The “manual” type does not interpret the values as the “value” type does. Instead, the value range is mapped linearly to the color palette. In this case, the middle color yellow is assigned to (-3.86 + 11.77) / 2, which is 3.955.
When the mapping argument is specified, the “value” and “manual” treemap types are identical. Say we assign -10 to red, 10 to yellow and 30 to blue:
treemap(dat, index="letters", vSize="x", vColor="y", type="value", palette="RdYlBu",
mapping=c(-10, 10, 30))
Almost all values, and hence the legend, are mapped to the lefthand-side of the palette. To see the full mapping in the legend, use the “range” argument:
treemap(dat, index="letters", vSize="x", vColor="y", type="value", palette="RdYlBu",
mapping=c(-10, 10, 30), range=c(-10, 30))