Skip to main content

Scale

Trait Scale 

Source
pub trait Scale: Send + Sync {
Show 30 methods // Required methods fn aesthetic(&self) -> Aesthetic; fn train(&mut self, values: &[Value]); fn map(&self, value: &Value) -> f64; fn breaks(&self) -> Vec<(f64, String)>; fn name(&self) -> &str; fn set_name(&mut self, name: &str); fn clone_box(&self) -> Box<dyn Scale>; // Provided methods fn transform(&self, value: &Value) -> Value { ... } fn is_discrete(&self) -> bool { ... } fn map_to_color(&self, _value: &Value) -> Option<(u8, u8, u8)> { ... } fn na_fill_pattern(&self) -> Option<FillPattern> { ... } fn is_na_break(&self, _label: &str) -> bool { ... } fn map_to_shape(&self, _value: &Value) -> Option<PointShape> { ... } fn map_to_linetype(&self, _value: &Value) -> Option<Linetype> { ... } fn map_to_size(&self, _value: &Value) -> Option<f64> { ... } fn map_to_alpha(&self, _value: &Value) -> Option<f64> { ... } fn sec_axis(&self) -> Option<&SecAxis> { ... } fn set_default_locale(&mut self, _locale: &Locale) { ... } fn locale(&self) -> Option<&Locale> { ... } fn format_value(&self, _value: &Value) -> Option<String> { ... } fn set_limits(&mut self, _min: f64, _max: f64) { ... } fn filter_limits(&self) -> Option<(f64, f64)> { ... } fn domain(&self) -> Option<(f64, f64)> { ... } fn expanded_domain(&self) -> Option<(f64, f64)> { ... } fn axis_position_opposite(&self) -> bool { ... } fn set_expand(&mut self, _mult: f64, _add: f64) { ... } fn map_fraction_to_size(&self, _fraction: f64) -> Option<f64> { ... } fn map_fraction_to_alpha(&self, _fraction: f64) -> Option<f64> { ... } fn reset_training(&mut self) { ... } fn validate(&self, _warnings: &mut Vec<String>) { ... }
}
Expand description

Trait for scales that map data values to visual properties.

Required Methods§

Source

fn aesthetic(&self) -> Aesthetic

Which aesthetic this scale is for.

Source

fn train(&mut self, values: &[Value])

Incorporate data values to determine domain.

Source

fn map(&self, value: &Value) -> f64

Map a data value to a [0, 1] normalized position (position scales) or to a concrete visual value index (color/size scales).

Source

fn breaks(&self) -> Vec<(f64, String)>

Generate break positions and labels for axis/legend.

Source

fn name(&self) -> &str

Human-readable name (axis title).

Source

fn set_name(&mut self, name: &str)

Set the scale name.

Source

fn clone_box(&self) -> Box<dyn Scale>

Clone this scale into a boxed trait object.

Provided Methods§

Source

fn transform(&self, value: &Value) -> Value

Apply transformation to raw data (e.g., log10).

Source

fn is_discrete(&self) -> bool

Whether this is a discrete scale.

Source

fn map_to_color(&self, _value: &Value) -> Option<(u8, u8, u8)>

Map a data value to an RGB color. Default returns None.

Source

fn na_fill_pattern(&self) -> Option<FillPattern>

A pattern fill for a value this scale draws with its flat na colour (Value::Na, or whatever else a scale treats that way) — ScaleFillBinned::na_pattern (#206) is the only implementor so far. Default None: the flat colour from map_to_color wins, unchanged. A geom that draws filled areas (geom_sf/geom_polygon/geom_rect/ geom_tile) checks this before falling back to map_to_color’s na-colour branch, and the legend’s “no data” key checks it too.

Source

fn is_na_break(&self, _label: &str) -> bool

Whether label (a breaks label) is this scale’s “no data” legend key, so the legend draws that one key with na_fill_pattern instead of its ordinary flat swatch colour. Default false (no scale without an na key needs this). ScaleFillBinned overrides it.

Source

fn map_to_shape(&self, _value: &Value) -> Option<PointShape>

Map a data value to a point shape. Default returns None.

Source

fn map_to_linetype(&self, _value: &Value) -> Option<Linetype>

Map a data value to a linetype. Default returns None.

Source

fn map_to_size(&self, _value: &Value) -> Option<f64>

Map a data value to a point size (radius in pixels). Default returns None.

Source

fn map_to_alpha(&self, _value: &Value) -> Option<f64>

Map a data value to an alpha (opacity) value. Default returns None.

Source

fn sec_axis(&self) -> Option<&SecAxis>

Get the secondary axis specification, if any.

Source

fn set_default_locale(&mut self, _locale: &Locale)

Adopt a plot-level default Locale for the default break labels (number marks, month names, date formats), unless the scale already has its own. Called by the plot builder when GGPlot::locale is set. Default: ignored (scales without numeric/date labels).

Source

fn locale(&self) -> Option<&Locale>

The locale this scale’s default labels are rendered with, if any.

Source

fn format_value(&self, _value: &Value) -> Option<String>

Format a single raw (pre-scale-transform) data value for a per-mark attribute (data-fvalue/data-fx, B2-4) or a tooltip template placeholder — e.g. a de-DE currency string, or a datetime x’s ISO/locale date, independent of how the axis itself abbreviates its break labels. None for a missing/non-finite value, or a scale with nothing meaningful to format (default: every scale except continuous position/size/linewidth and datetime/colour-continuous, which override this).

Source

fn set_limits(&mut self, _min: f64, _max: f64)

Override the trained domain limits (used by coord_cartesian zoom).

Source

fn filter_limits(&self) -> Option<(f64, f64)>

Return OOB filter limits if this scale was created with explicit limits (e.g., via xlim/ylim). Data outside these limits should be removed before stats.

Source

fn domain(&self) -> Option<(f64, f64)>

Return the trained data domain (min, max) for continuous scales. Used by the colorbar legend to pass data-space values to map_to_color().

Source

fn expanded_domain(&self) -> Option<(f64, f64)>

The data values at the panel edges (normalized 0 and 1) for a trained continuous position scale — the limits after expansion, in the scale’s transformed space. None for discrete / untrained / non-position scales.

Source

fn axis_position_opposite(&self) -> bool

Whether this axis is drawn on the opposite side (x → top, y → right).

Source

fn set_expand(&mut self, _mult: f64, _add: f64)

Set the expansion multiplier/additive constant (R’s expand = c(mult, add)), applied symmetrically to both ends. Used by CoordSf::train_scales (expand(false) passes (0.0, 0.0)) to pin an explicit xlim/ylim to the panel exactly. Default: no-op (discrete / non-position scales have no expansion to set).

Source

fn map_fraction_to_size(&self, _fraction: f64) -> Option<f64>

Map an already-computed [0, 1] scale fraction (as returned alongside each label by breaks) directly to an output size, bypassing the round trip through map — a discrete-style legend key only has the break’s rendered label, not its original data value, so a continuous scale can’t recover the fraction by re-mapping the label text. Default: None.

Source

fn map_fraction_to_alpha(&self, _fraction: f64) -> Option<f64>

Map an already-computed [0, 1] scale fraction directly to an output alpha (opacity), the map_fraction_to_size equivalent for a continuous alpha scale’s discrete-style legend keys — see that method’s doc for why the fraction, not the label, is the input. Default: None.

Source

fn reset_training(&mut self)

Reset training state so the scale can be retrained on new data.

Source

fn validate(&self, _warnings: &mut Vec<String>)

Validate this scale’s configuration once training is complete (e.g. a transform undefined at the domain’s own limits) and push a human-readable warning for each problem found. Called once per scale after the final training pass, with the plot’s warnings sink — map/map_to_size run per mark at draw time and have no such access, so a scale-level problem must be reported here instead. Default: no-op.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§