pub struct ScaleColorDiscrete { /* private fields */ }Expand description
Discrete color scale — maps categories to distinct colors.
Implementations§
Source§impl ScaleColorDiscrete
impl ScaleColorDiscrete
pub fn new(aesthetic: Aesthetic) -> Self
Sourcepub fn with_generated(self, p: GeneratedPalette) -> Self
pub fn with_generated(self, p: GeneratedPalette) -> Self
Colours computed for the number of levels (ggplot2’s hue_pal() /
viridis_pal()), e.g. GeneratedPalette::Hue(HuePalette::default())
— exactly ggplot2’s default colours for any number of groups.
Sourcepub fn sorted(self) -> Self
pub fn sorted(self) -> Self
Order levels lexicographically (instead of first appearance) so a given level always gets the same palette colour and legend position across charts, whatever order the data arrives in — no need to pre-sort levels and repeat a manual palette per chart.
pub fn with_palette(self, colors: Vec<RGBAColor>) -> Self
pub fn with_named_palette(self, name: &PaletteName) -> Self
Sourcepub fn with_levels(self, levels: Vec<String>) -> Self
pub fn with_levels(self, levels: Vec<String>) -> Self
Pre-seed the factor levels (order), so each level keeps a fixed palette color regardless of which levels are present in the data — e.g. for a legend whose series can be toggled without the colors reshuffling.
Sourcepub fn color_for_index(&self, idx: usize) -> RGBAColor
pub fn color_for_index(&self, idx: usize) -> RGBAColor
Get color for a given level index.
Sourcepub fn color_for_value(&self, value: &Value) -> RGBAColor
pub fn color_for_value(&self, value: &Value) -> RGBAColor
Get color for a value.
pub fn levels(&self) -> &[String]
Trait Implementations§
Source§impl Clone for ScaleColorDiscrete
impl Clone for ScaleColorDiscrete
Source§impl Debug for ScaleColorDiscrete
impl Debug for ScaleColorDiscrete
Source§impl Scale for ScaleColorDiscrete
impl Scale for ScaleColorDiscrete
Source§fn map(&self, value: &Value) -> f64
fn map(&self, value: &Value) -> f64
Source§fn is_discrete(&self) -> bool
fn is_discrete(&self) -> bool
Source§fn map_to_color(&self, value: &Value) -> Option<(u8, u8, u8)>
fn map_to_color(&self, value: &Value) -> Option<(u8, u8, u8)>
Source§fn reset_training(&mut self)
fn reset_training(&mut self)
Source§fn na_fill_pattern(&self) -> Option<FillPattern>
fn na_fill_pattern(&self) -> Option<FillPattern>
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
fn is_na_break(&self, _label: &str) -> bool
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 breaks_for_layout(&self) -> Vec<(f64, String)>
fn breaks_for_layout(&self) -> Vec<(f64, String)>
guide::legend::plan_legend’s per-key pitch sums) — never what’s
actually drawn, which stays breaks. Default:
identical to breaks(), so every scale but one is unaffected.
ScaleFillBinned::count_reserve (sipemu/ggplot-rs#271) overrides
this: a legend whose key labels carry a trained count
("10–50 (12)") measures as if every count had the widest
expected digit width, so the legend’s row count — and so the
panel — stays stable across renders whose counts differ only in
digit width (an animated map’s frames, sharing one GGPlot built
once per frame with the same breaks/colours).Source§fn bin_edge_labels(&self) -> Option<Vec<String>>
fn bin_edge_labels(&self) -> Option<Vec<String>>
breaks() (one per bin) — which guide_bins() (#409) draws at the
boundaries between keys. None (the default) for every other scale.Source§fn map_to_shape(&self, _value: &Value) -> Option<PointShape>
fn map_to_shape(&self, _value: &Value) -> Option<PointShape>
Source§fn map_to_linetype(&self, _value: &Value) -> Option<Linetype>
fn map_to_linetype(&self, _value: &Value) -> Option<Linetype>
Source§fn map_to_size(&self, _value: &Value) -> Option<f64>
fn map_to_size(&self, _value: &Value) -> Option<f64>
Source§fn map_to_alpha(&self, _value: &Value) -> Option<f64>
fn map_to_alpha(&self, _value: &Value) -> Option<f64>
Source§fn set_default_locale(&mut self, _locale: &Locale)
fn set_default_locale(&mut self, _locale: &Locale)
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>
fn locale(&self) -> Option<&Locale>
Source§fn format_value(&self, _value: &Value) -> Option<String>
fn format_value(&self, _value: &Value) -> Option<String>
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)
fn set_limits(&mut self, _min: f64, _max: f64)
Source§fn filter_limits(&self) -> Option<(f64, f64)>
fn filter_limits(&self) -> Option<(f64, f64)>
Source§fn domain(&self) -> Option<(f64, f64)>
fn domain(&self) -> Option<(f64, f64)>
Source§fn expanded_domain(&self) -> Option<(f64, f64)>
fn expanded_domain(&self) -> Option<(f64, f64)>
None for discrete / untrained / non-position scales.Source§fn axis_position_opposite(&self) -> bool
fn axis_position_opposite(&self) -> bool
Source§fn set_expand(&mut self, _mult: f64, _add: f64)
fn set_expand(&mut self, _mult: f64, _add: f64)
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 clear_expand(&mut self, _lower: bool, _upper: bool)
fn clear_expand(&mut self, _lower: bool, _upper: bool)
expand = FALSE for one side, #411). Default: no-op.Source§fn bin_positions(&mut self, _values: &[Value]) -> Option<Vec<Value>>
fn bin_positions(&mut self, _values: &[Value]) -> Option<Vec<Value>>
scale_x_binned, #408) replaces each value
with its bin’s midpoint before the stat runs; None (the default)
leaves positions alone.Source§fn log_ticks(&self) -> Vec<(f64, u8)>
fn log_ticks(&self) -> Vec<(f64, u8)>
guide_axis_logticks() (#409): (position, kind) of the log10
ticks to draw on this axis — kind 0 at each decade (long), 1 at the
5s (mid), 2 at the other integers (short). Empty by default.Source§fn set_log_ticks(&mut self, _on: bool)
fn set_log_ticks(&mut self, _on: bool)
log_ticks on or off. Default: no-op.Source§fn map_fraction_to_size(&self, _fraction: f64) -> Option<f64>
fn map_fraction_to_size(&self, _fraction: f64) -> Option<f64>
[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>
fn map_fraction_to_alpha(&self, _fraction: f64) -> Option<f64>
[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 validate(&self, _warnings: &mut Vec<String>)
fn validate(&self, _warnings: &mut Vec<String>)
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.Auto Trait Implementations§
impl Freeze for ScaleColorDiscrete
impl RefUnwindSafe for ScaleColorDiscrete
impl Send for ScaleColorDiscrete
impl Sync for ScaleColorDiscrete
impl Unpin for ScaleColorDiscrete
impl UnsafeUnpin for ScaleColorDiscrete
impl UnwindSafe for ScaleColorDiscrete
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more