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 assicated type can be one of follow 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 T where
T: Ranged,
impl<T> AsRangedCoord for T where
T: Ranged,
type CoordDescType = T
type Value = <T as Ranged>::ValueType
sourceimpl<T> BindKeyPointMethod for T where
T: AsRangedCoord,
impl<T> BindKeyPointMethod for T where
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 T where
T: AsRangedCoord,
impl<T> BindKeyPoints for T where
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 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
sourceimpl<T> IntoLinspace for T where
T: AsRangedCoord,
impl<T> IntoLinspace for T where
T: AsRangedCoord,
sourcefn step<S>(self, val: S) -> Linspace<Self::CoordDescType, S, Exact<Self::Value>> where
S: Clone,
Self::Value: Add<S>,
Self::Value: PartialOrd<Self::Value>,
Self::Value: Clone,
<Self::Value as Add<S>>::Output == Self::Value,
fn step<S>(self, val: S) -> Linspace<Self::CoordDescType, S, Exact<Self::Value>> where
S: Clone,
Self::Value: Add<S>,
Self::Value: PartialOrd<Self::Value>,
Self::Value: Clone,
<Self::Value as Add<S>>::Output == Self::Value,
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 R where
R: AsRangedCoord,
impl<R> IntoPartialAxis for R where
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
sourceimpl<DC> ReversibleRanged for DC where
DC: DiscreteRanged,
impl<DC> ReversibleRanged for DC where
DC: DiscreteRanged,
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more