Struct audio_processor_testing_helpers::charts::GroupBy
source · [−]pub struct GroupBy<T>(_, _)
where
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 for GroupBy<T>where
T: Clone + DiscreteRanged,
impl<T> Clone for GroupBy<T>where
T: Clone + DiscreteRanged,
sourceimpl<T> DiscreteRanged for GroupBy<T>where
T: DiscreteRanged,
impl<T> DiscreteRanged for GroupBy<T>where
T: DiscreteRanged,
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: &<GroupBy<T> as Ranged>::ValueType) -> Option<usize>
fn index_of(&self, value: &<GroupBy<T> as Ranged>::ValueType) -> Option<usize>
Map a value to the index Read more
sourcefn from_index(&self, index: usize) -> Option<<GroupBy<T> as Ranged>::ValueType>
fn from_index(&self, index: usize) -> Option<<GroupBy<T> as Ranged>::ValueType>
Reverse map the index to the value Read more
sourcefn values(&self) -> DiscreteValueIter<'_, Self>
fn values(&self) -> DiscreteValueIter<'_, Self>
Return a iterator that iterates over the all possible values Read more
sourceimpl<T> Ranged for GroupBy<T>where
T: DiscreteRanged,
impl<T> Ranged for GroupBy<T>where
T: DiscreteRanged,
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 as Ranged>::ValueType, limit: (i32, i32)) -> i32
fn map(&self, value: &<T as Ranged>::ValueType, limit: (i32, i32)) -> i32
This function maps the value to i32, which is the drawing coordinate
sourcefn key_points<HintType>(
&self,
hint: HintType
) -> Vec<<T as Ranged>::ValueType, Global>where
HintType: KeyPointHint,
fn key_points<HintType>(
&self,
hint: HintType
) -> Vec<<T as Ranged>::ValueType, Global>where
HintType: KeyPointHint,
This function gives the key points that we can draw a grid based on this
sourceimpl<T, R> ValueFormatter<T> for GroupBy<R>where
R: DiscreteRanged<ValueType = T> + ValueFormatter<T>,
impl<T, R> ValueFormatter<T> for GroupBy<R>where
R: DiscreteRanged<ValueType = T> + ValueFormatter<T>,
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 Twhere
T: Ranged,
impl<T> AsRangedCoord for Twhere
T: Ranged,
type CoordDescType = T
type CoordDescType = T
Type to describe a coordinate system
sourceimpl<T> BindKeyPointMethod for Twhere
T: AsRangedCoord,
impl<T> BindKeyPointMethod for Twhere
T: AsRangedCoord,
sourcefn with_key_point_func<F>(
self,
func: F
) -> WithKeyPointMethod<Self::CoordDescType>where
F: 'static + Fn(usize) -> Vec<Self::Value, Global>,
fn with_key_point_func<F>(
self,
func: F
) -> WithKeyPointMethod<Self::CoordDescType>where
F: 'static + Fn(usize) -> Vec<Self::Value, Global>,
Bind a existing coordinate spec with a given key points algorithm. See WithKeyPointMethod for more details.
Example: Read more
sourceimpl<T> BindKeyPoints for Twhere
T: AsRangedCoord,
impl<T> BindKeyPoints for Twhere
T: AsRangedCoord,
sourcefn with_key_points(
self,
points: Vec<Self::Value, Global>
) -> WithKeyPoints<Self::CoordDescType>
fn with_key_points(
self,
points: Vec<Self::Value, Global>
) -> WithKeyPoints<Self::CoordDescType>
Bind a existing coordinate spec with a given key points vector. See WithKeyPoints for more details.
Example: Read more
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
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
sourceimpl<T> IntoLinspace for Twhere
T: AsRangedCoord,
impl<T> IntoLinspace for Twhere
T: AsRangedCoord,
sourcefn step<S>(self, val: S) -> Linspace<Self::CoordDescType, S, Exact<Self::Value>>where
S: Clone,
Self::Value: Add<S, Output = Self::Value> + PartialOrd<Self::Value> + Clone,
fn step<S>(self, val: S) -> Linspace<Self::CoordDescType, S, Exact<Self::Value>>where
S: Clone,
Self::Value: Add<S, Output = Self::Value> + PartialOrd<Self::Value> + Clone,
Set the step value, make a linspace coordinate from the given range.
By default the matching method use the exact match Read more
sourceimpl<R> IntoPartialAxis for Rwhere
R: AsRangedCoord,
impl<R> IntoPartialAxis for Rwhere
R: AsRangedCoord,
sourcefn partial_axis(
self,
axis_range: Range<<Self::CoordDescType as Ranged>::ValueType>
) -> PartialAxis<Self::CoordDescType>
fn partial_axis(
self,
axis_range: Range<<Self::CoordDescType as Ranged>::ValueType>
) -> PartialAxis<Self::CoordDescType>
Make the partial axis Read more