pub struct BarChart<T, B, V>where
T: 'static,
B: Eq + Hash + Into<SharedString> + 'static,
V: Copy + PartialOrd + Num + ToPrimitive + Sealed + 'static,{ /* private fields */ }Implementations§
Source§impl<T, B, V> BarChart<T, B, V>where
B: Eq + Hash + Into<SharedString> + 'static,
V: Copy + PartialOrd + Num + ToPrimitive + Sealed + 'static,
impl<T, B, V> BarChart<T, B, V>where
B: Eq + Hash + Into<SharedString> + 'static,
V: Copy + PartialOrd + Num + ToPrimitive + Sealed + 'static,
pub fn new<I>(data: I) -> Selfwhere
I: IntoIterator<Item = T>,
Sourcepub fn id(self, id: impl Into<ElementId>) -> Self
pub fn id(self, id: impl Into<ElementId>) -> Self
Enable an interactive hover tooltip (crosshair + category/value) for this chart.
The id must be unique among sibling elements. Without it, the chart stays a
non-interactive plot. Works for every BarAlignment (vertical bars get a
vertical crosshair, horizontal bars a horizontal one).
Sourcepub fn name(self, name: impl Into<SharedString>) -> Self
pub fn name(self, name: impl Into<SharedString>) -> Self
Set the series name shown in the hover tooltip row (e.g. “Desktop”).
Sourcepub fn band(self, band: impl Fn(&T) -> B + 'static) -> Self
pub fn band(self, band: impl Fn(&T) -> B + 'static) -> Self
Map each datum to its band-axis value (the categorical/ordinal axis).
Sourcepub fn value(self, value: impl Fn(&T) -> V + 'static) -> Self
pub fn value(self, value: impl Fn(&T) -> V + 'static) -> Self
Map each datum to its numeric value along the value axis.
Sourcepub fn fill<Bg>(
self,
fill: impl Fn(&T, Bounds<f32>, Bounds<f32>, BarAlignment) -> Bg + 'static,
) -> Selfwhere
Bg: Into<Background> + 'static,
pub fn fill<Bg>(
self,
fill: impl Fn(&T, Bounds<f32>, Bounds<f32>, BarAlignment) -> Bg + 'static,
) -> Selfwhere
Bg: Into<Background> + 'static,
Set a per-datum verbatim fill.
The closure receives:
- the datum,
- the bar’s bounds in pixel space, expressed relative to the chart’s origin (i.e. the bar’s painted rectangle within the chart),
- the chart’s bounds in pixel space with origin
(0, 0)and size equal to the full chart extent, and - the bar’s
BarAlignment(so callers can branch on orientation, e.g. flip a gradient angle).
Both rectangles share the same coordinate system, so callers can implement arbitrary chart-aware backgrounds — bar-local gradients, chart-wide gradients, patterns, sampled colormaps, etc. — without any help from the library.
Accepts any type convertible to Background. Setting this clears any
previously set BarChart::fill_gradient.
Sourcepub fn fill_gradient(
self,
fill: impl Fn(&T, RangeInclusive<f32>, &dyn Fn(f32) -> f32) -> [LinearColorStop; 2] + 'static,
) -> Self
pub fn fill_gradient( self, fill: impl Fn(&T, RangeInclusive<f32>, &dyn Fn(f32) -> f32) -> [LinearColorStop; 2] + 'static, ) -> Self
Set a per-datum auto-oriented linear gradient fill.
The closure receives the datum, the chart’s full data range
(chart_range, derived from all data values), and a chart_to_bar
remap helper that maps a chart-value coordinate to a bar-local
gradient position (where 0.0 is the bar’s base and 1.0 is its tip).
Use bar-local positions directly for per-bar gradients (every bar looks the same regardless of its value):
.fill_gradient(|_, _, _| [
linear_color_stop(c.opacity(0.3), 0.0),
linear_color_stop(c, 1.0),
])Or use chart_to_bar to position stops at chart-relative values, so
each bar shows the slice of a chart-wide gradient corresponding to
its own [base, value] span:
.fill_gradient(|_, chart_range, chart_to_bar| [
linear_color_stop(c.opacity(0.3), chart_to_bar(*chart_range.start())),
linear_color_stop(c, chart_to_bar(*chart_range.end())),
])Stop positions returned outside [0, 1] are clipped to the bar; the
library interpolates colors at the clip points so the on-bar gradient
still matches the chart-wide one.
The gradient angle is derived from BarAlignment so stop-0 is at the
base and stop-1 at the tip. Setting this clears any previously set
BarChart::fill.
pub fn tick_margin(self, tick_margin: usize) -> Self
pub fn label<S>(self, label: impl Fn(&T) -> S + 'static) -> Selfwhere
S: Into<SharedString> + 'static,
Sourcepub fn label_axis(self, label_axis: bool) -> Self
pub fn label_axis(self, label_axis: bool) -> Self
Show or hide the band-axis line and labels.
Default is true.
Sourcepub fn value_axis(self, value_axis: bool) -> Self
pub fn value_axis(self, value_axis: bool) -> Self
Show or hide the value-axis tick labels.
Enabling this reserves [VALUE_AXIS_GAP] along the band axis (left of
vertical bars, below horizontal ones) for the labels.
Default is false.
Sourcepub fn value_tick_count(self, value_tick_count: usize) -> Self
pub fn value_tick_count(self, value_tick_count: usize) -> Self
Set how many even intervals the value axis is divided into, which drives both the grid line spacing and the value-axis tick labels.
This is a count, unlike Self::tick_margin, which is a stride over the
band axis categories.
Default is 4.
pub fn grid(self, grid: bool) -> Self
Sourcepub fn alignment(self, alignment: BarAlignment) -> Self
pub fn alignment(self, alignment: BarAlignment) -> Self
Set the bar alignment.
Default is BarAlignment::Bottom.
Sourcepub fn corner_radii(self, corner_radii: impl Into<Corners<Pixels>>) -> Self
pub fn corner_radii(self, corner_radii: impl Into<Corners<Pixels>>) -> Self
Set the corner radii applied to every bar rectangle.
Use Corners::all for uniform rounding, or construct Corners manually
to round only specific corners (e.g. just the tip end of each bar).
Trait Implementations§
Source§impl<T, B, V> Element for BarChart<T, B, V>where
T: 'static,
B: Eq + Hash + Into<SharedString> + 'static,
V: Copy + PartialOrd + Num + ToPrimitive + Sealed + 'static,
impl<T, B, V> Element for BarChart<T, B, V>where
T: 'static,
B: Eq + Hash + Into<SharedString> + 'static,
V: Copy + PartialOrd + Num + ToPrimitive + Sealed + 'static,
Source§type RequestLayoutState = ()
type RequestLayoutState = ()
Element::request_layout. A mutable reference to this state is subsequently
provided to Element::prepaint and Element::paint.Source§type PrepaintState = (Option<Hitbox>, Vec<AnyElement>, Option<AnyElement>)
type PrepaintState = (Option<Hitbox>, Vec<AnyElement>, Option<AnyElement>)
Element::prepaint. A mutable reference to this state is subsequently
provided to Element::paint.Source§fn id(&self) -> Option<ElementId>
fn id(&self) -> Option<ElementId>
Source§fn source_location(&self) -> Option<&'static Location<'static>>
fn source_location(&self) -> Option<&'static Location<'static>>
Source§fn request_layout(
&mut self,
_: Option<&GlobalElementId>,
_: Option<&InspectorElementId>,
window: &mut Window,
cx: &mut App,
) -> (LayoutId, Self::RequestLayoutState)
fn request_layout( &mut self, _: Option<&GlobalElementId>, _: Option<&InspectorElementId>, window: &mut Window, cx: &mut App, ) -> (LayoutId, Self::RequestLayoutState)
Source§fn prepaint(
&mut self,
global_id: Option<&GlobalElementId>,
_: Option<&InspectorElementId>,
bounds: Bounds<Pixels>,
_: &mut Self::RequestLayoutState,
window: &mut Window,
cx: &mut App,
) -> Self::PrepaintState
fn prepaint( &mut self, global_id: Option<&GlobalElementId>, _: Option<&InspectorElementId>, bounds: Bounds<Pixels>, _: &mut Self::RequestLayoutState, window: &mut Window, cx: &mut App, ) -> Self::PrepaintState
Element::request_layout().Source§fn paint(
&mut self,
global_id: Option<&GlobalElementId>,
_: Option<&InspectorElementId>,
bounds: Bounds<Pixels>,
_: &mut Self::RequestLayoutState,
prepaint: &mut Self::PrepaintState,
window: &mut Window,
cx: &mut App,
)
fn paint( &mut self, global_id: Option<&GlobalElementId>, _: Option<&InspectorElementId>, bounds: Bounds<Pixels>, _: &mut Self::RequestLayoutState, prepaint: &mut Self::PrepaintState, window: &mut Window, cx: &mut App, )
Element::request_layout().Source§fn a11y_role(&self) -> Option<Role>
fn a11y_role(&self) -> Option<Role>
None are not included in the accessibility tree. Read moreSource§fn write_a11y_info(&self, _node: &mut Node)
fn write_a11y_info(&self, _node: &mut Node)
a11y_role() returns Some. Read moreSource§fn a11y_synthetic_children(
&mut self,
_prepaint: &mut Self::PrepaintState,
_builder: &mut A11ySubtreeBuilder<'_>,
)
fn a11y_synthetic_children( &mut self, _prepaint: &mut Self::PrepaintState, _builder: &mut A11ySubtreeBuilder<'_>, )
Source§fn into_any(self) -> AnyElement
fn into_any(self) -> AnyElement
AnyElement.Source§impl<T, B, V> IntoElement for BarChart<T, B, V>where
T: 'static,
B: Eq + Hash + Into<SharedString> + 'static,
V: Copy + PartialOrd + Num + ToPrimitive + Sealed + 'static,
impl<T, B, V> IntoElement for BarChart<T, B, V>where
T: 'static,
B: Eq + Hash + Into<SharedString> + 'static,
V: Copy + PartialOrd + Num + ToPrimitive + Sealed + 'static,
Source§type Element = BarChart<T, B, V>
type Element = BarChart<T, B, V>
Source§fn into_element(self) -> Self::Element
fn into_element(self) -> Self::Element
Element.Source§fn into_any_element(self) -> AnyElement
fn into_any_element(self) -> AnyElement
AnyElement.Source§impl<T, B, V> Plot for BarChart<T, B, V>where
B: Eq + Hash + Into<SharedString> + 'static,
V: Copy + PartialOrd + Num + ToPrimitive + Sealed + 'static,
impl<T, B, V> Plot for BarChart<T, B, V>where
B: Eq + Hash + Into<SharedString> + 'static,
V: Copy + PartialOrd + Num + ToPrimitive + Sealed + 'static,
fn paint(&mut self, bounds: Bounds<Pixels>, window: &mut Window, cx: &mut App)
Source§fn id(&self) -> Option<ElementId>
fn id(&self) -> Option<ElementId>
Source§fn tooltip_state(
&self,
position: Point<Pixels>,
bounds: Bounds<Pixels>,
_cx: &App,
) -> Option<TooltipState>
fn tooltip_state( &self, position: Point<Pixels>, bounds: Bounds<Pixels>, _cx: &App, ) -> Option<TooltipState>
Source§fn tooltip(
&self,
state: &TooltipState,
cursor: Point<Pixels>,
bounds: Bounds<Pixels>,
window: &mut Window,
cx: &mut App,
) -> Option<AnyElement>
fn tooltip( &self, state: &TooltipState, cursor: Point<Pixels>, bounds: Bounds<Pixels>, window: &mut Window, cx: &mut App, ) -> Option<AnyElement>
TooltipState. Read moreAuto Trait Implementations§
impl<T, B, V> !RefUnwindSafe for BarChart<T, B, V>
impl<T, B, V> !Send for BarChart<T, B, V>
impl<T, B, V> !Sync for BarChart<T, B, V>
impl<T, B, V> !UnwindSafe for BarChart<T, B, V>
impl<T, B, V> Freeze for BarChart<T, B, V>where
Vec<T>: Freeze,
Option<Rc<dyn Fn(&T) -> B>>: Freeze,
Option<Rc<dyn Fn(&T) -> V>>: Freeze,
Option<Rc<dyn Fn(&T, Bounds<f32>, Bounds<f32>, BarAlignment) -> Background>>: Freeze,
Option<Rc<dyn Fn(&T, RangeInclusive<f32>, &dyn Fn(f32) -> f32) -> [LinearColorStop; 2]>>: Freeze,
Option<Rc<dyn Fn(&T) -> SharedString>>: Freeze,
impl<T, B, V> Unpin for BarChart<T, B, V>where
Vec<T>: Unpin,
Option<Rc<dyn Fn(&T) -> B>>: Unpin,
Option<Rc<dyn Fn(&T) -> V>>: Unpin,
Option<Rc<dyn Fn(&T, Bounds<f32>, Bounds<f32>, BarAlignment) -> Background>>: Unpin,
Option<Rc<dyn Fn(&T, RangeInclusive<f32>, &dyn Fn(f32) -> f32) -> [LinearColorStop; 2]>>: Unpin,
Option<Rc<dyn Fn(&T) -> SharedString>>: Unpin,
impl<T, B, V> UnsafeUnpin for BarChart<T, B, V>where
Vec<T>: UnsafeUnpin,
Option<Rc<dyn Fn(&T) -> B>>: UnsafeUnpin,
Option<Rc<dyn Fn(&T) -> V>>: UnsafeUnpin,
Option<Rc<dyn Fn(&T, Bounds<f32>, Bounds<f32>, BarAlignment) -> Background>>: UnsafeUnpin,
Option<Rc<dyn Fn(&T, RangeInclusive<f32>, &dyn Fn(f32) -> f32) -> [LinearColorStop; 2]>>: UnsafeUnpin,
Option<Rc<dyn Fn(&T) -> SharedString>>: UnsafeUnpin,
Blanket Implementations§
Source§impl<E> AnimationExt for Ewhere
E: IntoElement + 'static,
impl<E> AnimationExt for Ewhere
E: IntoElement + 'static,
Source§fn with_animation(
self,
id: impl Into<ElementId>,
animation: Animation,
animator: impl Fn(Self, f32) -> Self + 'static,
) -> AnimationElement<Self>where
Self: Sized,
fn with_animation(
self,
id: impl Into<ElementId>,
animation: Animation,
animator: impl Fn(Self, f32) -> Self + 'static,
) -> AnimationElement<Self>where
Self: Sized,
Source§fn with_animations(
self,
id: impl Into<ElementId>,
animations: Vec<Animation>,
animator: impl Fn(Self, usize, f32) -> Self + 'static,
) -> AnimationElement<Self>where
Self: Sized,
fn with_animations(
self,
id: impl Into<ElementId>,
animations: Vec<Animation>,
animator: impl Fn(Self, usize, f32) -> Self + 'static,
) -> AnimationElement<Self>where
Self: Sized,
Source§fn with_spring<T>(
self,
id: impl Into<ElementId>,
animation: SpringAnimation<T>,
animator: impl FnOnce(Self, <T as SpringTarget>::Output) -> Self + 'static,
) -> SpringAnimationElement<Self>
fn with_spring<T>( self, id: impl Into<ElementId>, animation: SpringAnimation<T>, animator: impl FnOnce(Self, <T as SpringTarget>::Output) -> Self + 'static, ) -> SpringAnimationElement<Self>
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> FluentBuilder for Twhere
T: IntoElement,
impl<T> FluentBuilder for Twhere
T: IntoElement,
Source§fn map<U>(self, f: impl FnOnce(Self) -> U) -> Uwhere
Self: Sized,
fn map<U>(self, f: impl FnOnce(Self) -> U) -> Uwhere
Self: Sized,
Source§fn when(self, condition: bool, then: impl FnOnce(Self) -> Self) -> Selfwhere
Self: Sized,
fn when(self, condition: bool, then: impl FnOnce(Self) -> Self) -> Selfwhere
Self: Sized,
Source§fn when_else(
self,
condition: bool,
then: impl FnOnce(Self) -> Self,
else_fn: impl FnOnce(Self) -> Self,
) -> Selfwhere
Self: Sized,
fn when_else(
self,
condition: bool,
then: impl FnOnce(Self) -> Self,
else_fn: impl FnOnce(Self) -> Self,
) -> Selfwhere
Self: Sized,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more