pub struct GroupBy<T: DiscreteRanged>(/* private fields */);
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§
Source§impl<T: DiscreteRanged> DiscreteRanged for GroupBy<T>
impl<T: DiscreteRanged> DiscreteRanged for GroupBy<T>
Source§fn 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
Source§fn 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
Source§fn 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
Source§fn 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
Source§impl<T: DiscreteRanged> Ranged for GroupBy<T>
impl<T: DiscreteRanged> Ranged for GroupBy<T>
Source§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
Source§fn 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
Source§fn 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
Source§impl<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> Freeze for GroupBy<T>where
T: Freeze,
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§
Source§impl<T> AsRangedCoord for Twhere
T: Ranged,
impl<T> AsRangedCoord for Twhere
T: Ranged,
Source§impl<T> BindKeyPointMethod for Twhere
T: AsRangedCoord,
impl<T> BindKeyPointMethod for Twhere
T: AsRangedCoord,
Source§fn with_key_point_func<F: Fn(usize) -> Vec<Self::Value> + 'static>(
self,
func: F,
) -> WithKeyPointMethod<Self::CoordDescType>
fn with_key_point_func<F: Fn(usize) -> Vec<Self::Value> + 'static>( self, func: F, ) -> WithKeyPointMethod<Self::CoordDescType>
Bind a existing coordinate spec with a given key points algorithm. See WithKeyPointMethod for more details.
Example: Read more
Source§impl<T> BindKeyPoints for Twhere
T: AsRangedCoord,
impl<T> BindKeyPoints for Twhere
T: AsRangedCoord,
Source§fn with_key_points(
self,
points: Vec<Self::Value>,
) -> WithKeyPoints<Self::CoordDescType>
fn with_key_points( self, points: Vec<Self::Value>, ) -> WithKeyPoints<Self::CoordDescType>
Bind a existing coordinate spec with a given key points vector. See WithKeyPoints for more details.
Example: Read more
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoLinspace for Twhere
T: AsRangedCoord,
impl<T> IntoLinspace for Twhere
T: AsRangedCoord,
Source§impl<R> IntoPartialAxis for Rwhere
R: AsRangedCoord,
impl<R> IntoPartialAxis for Rwhere
R: AsRangedCoord,
Source§fn 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