pub struct BarChart<T, B, V>{ /* private fields */ }Implementations§
Source§impl<T, B, V> BarChart<T, B, V>
impl<T, B, V> BarChart<T, B, V>
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
Name this chart’s ElementId, replacing the default taken from the
construction site.
Pass one where a single construction site renders several of these charts as siblings: they share the default id, and with it one hover state and one path cache. The id must be unique among those siblings.
Sourcepub fn interactive(self, interactive: bool) -> Self
pub fn interactive(self, interactive: bool) -> Self
Turn this chart’s interactive layer on or off. On by default.
The layer is the hitbox under the cursor and what it drives: a crosshair marks the hovered band, and a tooltip shows its category and value. Turn it off for a chart that only decorates, or one an element above it wants the cursor for: without a hitbox it neither answers the mouse nor takes the hover from what sits over it. A chart that is off also drops its path cache, which is keyed on the same id.
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 tooltip_title(self, title: impl Fn(&T) -> SharedString + 'static) -> Self
pub fn tooltip_title(self, title: impl Fn(&T) -> SharedString + 'static) -> Self
Set the hover tooltip’s title for a datum, instead of its band value.
Sourcepub fn tooltip_value(
self,
value: impl Fn(&T, f64) -> SharedString + 'static,
) -> Self
pub fn tooltip_value( self, value: impl Fn(&T, f64) -> SharedString + 'static, ) -> Self
Set the text of the tooltip row’s value; the raw number by default.
The closure receives the datum and the value the row reads.
Sourcepub fn tooltip_value_color<H>(
self,
color: impl Fn(&T, f64) -> H + 'static,
) -> Self
pub fn tooltip_value_color<H>( self, color: impl Fn(&T, f64) -> H + 'static, ) -> Self
Color the tooltip row’s value, such as green or red by its sign; the tooltip’s text color by default.
The closure receives the same arguments as
tooltip_value.
Sourcepub fn tooltip_content<E>(
self,
content: impl Fn(&T, &mut Window, &mut App) -> E + 'static,
) -> Selfwhere
E: IntoElement,
pub fn tooltip_content<E>(
self,
content: impl Fn(&T, &mut Window, &mut App) -> E + 'static,
) -> Selfwhere
E: IntoElement,
Draw the tooltip box’s content for a datum yourself, in place of the title and rows, for a layout they cannot express such as a table.
The highlight band and where the box sits stay the chart’s, and
tooltip_title, tooltip_value
and tooltip_value_color no longer apply.
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_color<H>(self, color: impl Fn(&T) -> H + 'static) -> Self
pub fn label_color<H>(self, color: impl Fn(&T) -> H + 'static) -> Self
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.
Placed Outside, the default, the labels
take a gutter along the band axis, left of vertical bars and below
horizontal ones.
Default is false.
Sourcepub fn value_tick_count(self, count: usize) -> Self
pub fn value_tick_count(self, count: usize) -> Self
Set how many ticks the value axis carries, evenly spaced from the baseline to the far edge with both ends included, which drives both the grid lines and the value-axis tick labels.
Unlike Self::tick_margin, a stride over the band axis categories,
this counts the ticks themselves. Values below 2 are raised to 2.
Default is 5.
Sourcepub fn value_axis_label_placement(self, placement: AxisLabelPlacement) -> Self
pub fn value_axis_label_placement(self, placement: AxisLabelPlacement) -> Self
Set where the value-axis tick labels sit: in a gutter beside the bars, or inside the plot beside their grid lines, which keeps the bars’ room.
Default is AxisLabelPlacement::Outside.
Sourcepub fn value_tick_format<S>(self, format: impl Fn(f64) -> S + 'static) -> Selfwhere
S: Into<SharedString> + 'static,
pub fn value_tick_format<S>(self, format: impl Fn(f64) -> S + 'static) -> Selfwhere
S: Into<SharedString> + 'static,
Set the text of each value-axis tick label from the value at its tick.
Default is whole numbers bare and the rest to one decimal.
Sourcepub fn band_count(self, count: usize) -> Self
pub fn band_count(self, count: usize) -> Self
Lay the band axis out for count bands instead of the data’s own
length.
The data takes the leading bands in order and the rest stay empty, so
each bar keeps its width and place as the data grows. A count below
the data’s length has no effect.
Sourcepub fn band_tick_count(self, count: usize) -> Self
pub fn band_tick_count(self, count: usize) -> Self
Label count of the bands, spread evenly from the first to the last,
instead of every tick_margin-th.
With Self::band_count set, the labels spread over all the bands, so
they keep their places as the data grows; one that falls on an empty band
is not drawn yet.
pub fn grid(self, grid: bool) -> Self
Sourcepub fn grid_dashed(self, dashed: bool) -> Self
pub fn grid_dashed(self, dashed: bool) -> Self
Draw the grid dashed or solid.
Default is true.
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).
Sourcepub fn padding_inner(self, padding: f32) -> Self
pub fn padding_inner(self, padding: f32) -> Self
Set the gap between neighbouring bars, as a share of each band.
Default is 0.4.
Sourcepub fn padding_outer(self, padding: f32) -> Self
pub fn padding_outer(self, padding: f32) -> Self
Set the gap before the first bar and after the last, as a share of a band.
Default is 0.2.
Sourcepub fn max_band_width(self, width: impl Into<Pixels>) -> Self
pub fn max_band_width(self, width: impl Into<Pixels>) -> Self
Keep every bar at most width wide, so a few bars across a wide chart
stay narrow instead of filling their bands.
Default is 30px.
Sourcepub fn min_length(self, length: f32) -> Self
pub fn min_length(self, length: f32) -> Self
Draw every bar at least length pixels long, so a zero or tiny value
still shows a stub instead of disappearing into the baseline.
The stub grows the way the bar’s value would: away from the zero line, to the negative side for a negative value and to the positive side for zero. A bar already that long is left alone.
Default is 0.
Trait Implementations§
Source§impl<T, B, V> IntoElement for BarChart<T, B, V>
impl<T, B, V> IntoElement for BarChart<T, B, V>
Source§type Element = PlotElement<BarChart<T, B, V>>
type Element = PlotElement<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>
impl<T, B, V> Plot for BarChart<T, B, V>
Source§fn prepaint(
&mut self,
_bounds: Bounds<Pixels>,
window: &mut Window,
_cx: &mut App,
) -> Vec<AnyElement>
fn prepaint( &mut self, _bounds: Bounds<Pixels>, window: &mut Window, _cx: &mut App, ) -> Vec<AnyElement>
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,
Option<Rc<dyn Fn(&T) -> Hsla>>: Freeze,
TooltipContent<T>: 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,
Option<Rc<dyn Fn(&T) -> Hsla>>: Unpin,
TooltipContent<T>: 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,
Option<Rc<dyn Fn(&T) -> Hsla>>: UnsafeUnpin,
TooltipContent<T>: 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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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