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
Source§fn index_of(&self, value: &Self::ValueType) -> Option<usize>
fn index_of(&self, value: &Self::ValueType) -> Option<usize>
Source§fn from_index(&self, index: usize) -> Option<Self::ValueType>
fn from_index(&self, index: usize) -> Option<Self::ValueType>
Source§fn values(&self) -> DiscreteValueIter<'_, Self>where
Self: Sized,
fn values(&self) -> DiscreteValueIter<'_, Self>where
Self: Sized,
Source§impl<T: DiscreteRanged> Ranged for GroupBy<T>
impl<T: DiscreteRanged> Ranged for GroupBy<T>
Source§type FormatOption = NoDefaultFormatting
type FormatOption = NoDefaultFormatting
Source§fn map(&self, value: &T::ValueType, limit: (i32, i32)) -> i32
fn map(&self, value: &T::ValueType, limit: (i32, i32)) -> i32
Source§fn key_points<HintType: KeyPointHint>(
&self,
hint: HintType,
) -> Vec<T::ValueType>
fn key_points<HintType: KeyPointHint>( &self, hint: HintType, ) -> Vec<T::ValueType>
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>
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>
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> 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>
Source§impl<DC> ReversibleRanged for DCwhere
DC: DiscreteRanged,
impl<DC> ReversibleRanged for DCwhere
DC: DiscreteRanged,
Layout§
Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.