pub struct GroupBy<T: DiscreteRanged>(_, _);
Expand description
Grouping the value in the coordinate specification.
This combinator doesn’t change the coordinate mapping behavior. But it changes how the key point is generated, this coordinate specification will enforce that only the first value in each group can be emitted as the bold key points.
This is useful, for example, when we have an X axis is a integer and denotes days. And we are expecting the tick mark denotes weeks, in this way we can make the range spec grouping by 7 elements. With the help of the GroupBy decorator, this can be archived quite easily:
use plotters::prelude::*;
let mut buf = vec![0;1024*768*3];
let area = BitMapBackend::with_buffer(buf.as_mut(), (1024, 768)).into_drawing_area();
let chart = ChartBuilder::on(&area)
.build_cartesian_2d((0..100).group_by(7), 0..100)
.unwrap();
To apply this combinator, call ToGroupByRange::group_by method on any discrete coordinate spec.
Trait Implementations
sourceimpl<T: Clone + DiscreteRanged> Clone for GroupBy<T>
impl<T: Clone + DiscreteRanged> Clone for GroupBy<T>
sourceimpl<T: DiscreteRanged> DiscreteRanged for GroupBy<T>
impl<T: DiscreteRanged> DiscreteRanged for GroupBy<T>
sourcefn size(&self) -> usize
fn size(&self) -> usize
Get the number of element in the range Note: we assume that all the ranged discrete coordinate has finite value Read more
sourcefn index_of(&self, value: &Self::ValueType) -> Option<usize>
fn index_of(&self, value: &Self::ValueType) -> Option<usize>
Map a value to the index Read more
sourcefn from_index(&self, index: usize) -> Option<Self::ValueType>
fn from_index(&self, index: usize) -> Option<Self::ValueType>
Reverse map the index to the value Read more
sourcefn values(&self) -> DiscreteValueIter<'_, Self> where
Self: Sized,
fn values(&self) -> DiscreteValueIter<'_, Self> where
Self: Sized,
Return a iterator that iterates over the all possible values Read more
sourceimpl<T: DiscreteRanged> Ranged for GroupBy<T>
impl<T: DiscreteRanged> Ranged for GroupBy<T>
type FormatOption = NoDefaultFormatting
type FormatOption = NoDefaultFormatting
This marker decides if Plotters default ValueFormatter implementation should be used. This associated type can be one of the following two types: Read more
sourcefn map(&self, value: &T::ValueType, limit: (i32, i32)) -> i32
fn map(&self, value: &T::ValueType, limit: (i32, i32)) -> i32
This function maps the value to i32, which is the drawing coordinate
sourcefn key_points<HintType: KeyPointHint>(&self, hint: HintType) -> Vec<T::ValueType>
fn key_points<HintType: KeyPointHint>(&self, hint: HintType) -> Vec<T::ValueType>
This function gives the key points that we can draw a grid based on this
sourceimpl<T, R: DiscreteRanged<ValueType = T> + ValueFormatter<T>> ValueFormatter<T> for GroupBy<R>
impl<T, R: DiscreteRanged<ValueType = T> + ValueFormatter<T>> ValueFormatter<T> for GroupBy<R>
Auto Trait Implementations
impl<T> RefUnwindSafe for GroupBy<T> where
T: RefUnwindSafe,
impl<T> Send for GroupBy<T> where
T: Send,
impl<T> Sync for GroupBy<T> where
T: Sync,
impl<T> Unpin for GroupBy<T> where
T: Unpin,
impl<T> UnwindSafe for GroupBy<T> where
T: UnwindSafe,
Blanket Implementations
sourceimpl<T> AsRangedCoord for T where
T: Ranged,
impl<T> AsRangedCoord for T where
T: Ranged,
type CoordDescType = T
type CoordDescType = T
Type to describe a coordinate system
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more