Expand description
Data scaling and value normalization for visualization.
This module provides methods for mapping raw data values to normalized [0.0, 1.0] range for colormap sampling. It supports multiple scaling strategies:
- Linear: Direct linear mapping
(val - min) / (max - min) - Logarithmic:
log(val / min) / log(max / min)for positive data with wide dynamic range - SymLog: Symmetric logarithm for data containing both positive and negative values
- Asinh: Inverse hyperbolic sine for data with wide dynamic range
- Histogram Equalization: Perceptual stretching using histogram distribution
§Handling Invalid Data
The NegMode enum controls treatment of masked/invalid pixels:
- NegMode::Zero: Render as minimum value
- NegMode::Unseen: Render as bad color (typically white)
§Examples
ⓘ
use map2fig::scale::{scale_value, Scale};
use map2fig::NegMode;
let scaled = scale_value(5.0, 0.0, 10.0, Scale::Linear, NegMode::Zero, None, None);
// Result: PixelValue::Color(0.5)Structs§
- Histogram
Scale - Scale
Cache - Pre-computed scale transformation constants to avoid per-pixel recomputation.
Enums§
Functions§
- build_
histogram_ scale - generate_
colorbar_ ticks - scale_
value - unsafe_
float_ cmp - Direct float comparison using std::cmp for faster sorting. This avoids the NaN check overhead since data is pre-validated.
- validate_
scale_ config - Validate scaling configuration parameters.