Meaning and Limitations of Max Normalization in Map Visualizations
Max normalization produces relative color intensity by dividing unit values by the highest value in the selected set. Distinct from share of total and min-max normalization, this approach requires an explicit visual contract concerning outliers, comparisons across periods, missing data, negative values, and selection of an appropriate denominator.
Relative intensity and share of the total
Displaying the unit with the maximum value as 100 percent and in the darkest color is based on the following transformation:
rᵢ = xᵢ / xₘₐₓ
Here, xᵢ is the observation value of unit i; xₘₐₓ is the highest value among displayed units; and rᵢ is relative intensity in the [0,1] interval. Its percentage representation is:
pᵢ = 100 × xᵢ / xₘₐₓ
This operation is max normalization or max scaling. It differs from min-max normalization, which uses both the minimum and maximum values:
zᵢ = (xᵢ - xₘᵢₙ) / (xₘₐₓ - xₘᵢₙ)
In max normalization, zero is treated as the natural lower bound and the minimum value does not enter the transformation. The darkest unit being 100 percent does not indicate that 100 percent absolute success, occupancy, or theoretical capacity has been reached; it expresses only relative position against the highest observation in the selected dataset.
Share of the total is a different measure:
sᵢ = xᵢ / Σxⱼ
When A = 100, B = 50, and C = 50, max scaling produces 100 percent for A and 50 percent for B and C. Their shares of the total are 50 percent, 25 percent, and 25 percent, respectively. Therefore, displaying B as 50 percent does not mean that B accounts for half of the total data.
The map legend should state the reference explicitly: “Color intensity has been calculated using the highest unit value in the selected period as the reference.” Absolute value, intensity relative to the highest unit, and share of the total should be presented in separate fields:
- Value: 12.480
- Intensity relative to the highest unit: %63
- Share of the national total: %4,8
Color mapping, value range, and outliers
The normalized [0,1] value is not yet a color. Color conversion is a separate function:
cᵢ = C(rᵢ)
C is the function that maps a normalized value to a particular color shade. For linear grayscale or single-hue intensity, color channels can be calculated as follows:
channelᵢ = channelₘᵢₙ + rᵢ × (channelₘₐₓ - channelₘᵢₙ)
Equal numerical steps in RGB space do not always create equal perceptual differences. Therefore, perceptually ordered color sequences progressing from light to dark should be preferred.
- A sequential color scale is suitable for values that start at zero and only increase.
- A diverging color scale is required for positive and negative deviations on opposite sides of a reference point.
- Categorical colors should be used for unordered classes.
Max normalization is generally suitable for sequential data satisfying 0 ≤ xᵢ ≤ xₘₐₓ. With negative values, xᵢ / xₘₐₓ does not produce a meaningful [0,1] scale. Values of -20, 10, and 40 produce -0,5, 0,25, and 1, respectively. Where zero is not the natural reference, the following transformations may be more appropriate:
dᵢ = xᵢ - x̄
zᵢ = (xᵢ - x̄) / σ
In the dataset 10, 12, 14, 16, 18, 200, the first five values lie between 0,05 and 0,09, while the last value is 1,00. The first five units are compressed into the light part of the color scale, although 18 / 10 = 1,8 indicates approximately 80 percent variation among them.
An upper percentile can be used as the visual upper bound:
u = P₉₅(x) rᵢ = min(xᵢ / u, 1)
Under this approach, values above the 95th percentile are clipped to the darkest shade. A logarithmic transformation distinguishes low and middle values over wide ranges:
rᵢ = log(1 + xᵢ) / log(1 + xₘₐₓ)
A square-root transformation provides gentler compression:
rᵢ = √xᵢ / √xₘₐₓ
Linear max scaling is intended to preserve absolute magnitude ratios; logarithmic or square-root scaling distinguishes low values in long-tailed distributions; percentile clipping manages the effect of outliers. Quantile or natural-break classification can be used when the distribution is presented in classes.
Comparisons across periods and data validity
If each map is rescaled by its own maximum, colors indicate relative position only within the relevant map. If the January maximum is 1.000 and the February maximum is 2.000, a unit valued at 800 in January has intensity 800 / 1000 = 0,80; a unit valued at 1.000 in February has intensity 1000 / 2000 = 0,50. Although the absolute value increases, the color may become lighter because relative position declines.
color change ≠ absolute value change
A fixed reference should be used for colors comparable over time:
rᵢ,t = xᵢ,t / R
R may be the common maximum of all periods, institutional capacity, a target or threshold, the maximum of a specified reference period, or a fixed upper bound. A dynamic maximum compares units within the same period; a fixed maximum compares absolute change across periods.
Zero, NULL, missing data, and an error are distinct conditions. In particular, Number(null) producing 0 may cause missing data to be visualized as an actual zero. Validation should cover whether the value is numeric and finite, whether negative values are valid, whether the field exists, and whether measurement was completed.
Missing data should not be shown with the lightest shade. If the lightest shade represents actual zero, missing values require a separate neutral color or pattern. Division is undefined when the maximum is zero; the rule xₘₐₓ = 0 ise rᵢ = 0 should be applied only after confirming that all valid values are genuinely measured zeros. Invalid negative values should not be silently clipped to zero.
Denominator selection and the visual contract
Raw totals can make large administrative or operational units appear naturally darker. Event counts can be affected by population, staff, devices, processing capacity, or record volume. A denominator-based rate can therefore be used:
qᵢ = xᵢ / bᵢ
A rate per one hundred thousand people is:
qᵢ = 100000 × xᵢ / nüfusᵢ
This rate can then be normalized:
rᵢ = qᵢ / max(q)
Raw totals indicate where workload accumulates, per-unit rates indicate where relative intensity is high, and capacity ratios indicate which unit is closer to its limit. Normalization cannot correct an incorrectly selected denominator:
raw data → meaningful metric → statistical transformation → color mapping
Linear max scaling preserves ratios:
xₐ / xᵦ = rₐ / rᵦ
However, color differences do not communicate numerical distances with the same precision. A map strongly shows high and low units, geographic concentration, clusters, and outliers; by itself, it does not show the exact difference between two units, the exact share of the total, statistical significance, or the cause of change.
The method has complexity O(n): the maximum is found in one pass and ratios are calculated in a second pass. A reliable implementation must explicitly define the reference set and maximum, missing-data behavior, the zero-maximum rule, policy for negative values and outliers, scaling policy across periods, and the color conversion function. If the maximum is recalculated when a filter changes, the color of a unit with an unchanged value may change; this is not an error but the result of relative comparison within the selected subset.