pub struct BarChart<T, B, V>where
T: 'static,
B: PartialEq + Into<SharedString> + 'static,
V: Copy + PartialOrd + Num + ToPrimitive + Sealed + 'static,{ /* private fields */ }Implementations§
Source§impl<T, B, V> BarChart<T, B, V>where
B: PartialEq + Into<SharedString> + 'static,
V: Copy + PartialOrd + Num + ToPrimitive + Sealed + 'static,
impl<T, B, V> BarChart<T, B, V>where
B: PartialEq + Into<SharedString> + 'static,
V: Copy + PartialOrd + Num + ToPrimitive + Sealed + 'static,
pub fn new<I>(data: I) -> Selfwhere
I: IntoIterator<Item = T>,
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.
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: PartialEq + Into<SharedString> + 'static,
V: Copy + PartialOrd + Num + ToPrimitive + Sealed + 'static,
实现 Element trait,提供图表的布局和渲染逻辑
impl<T, B, V> Element for BarChart<T, B, V>where
T: 'static,
B: PartialEq + Into<SharedString> + 'static,
V: Copy + PartialOrd + Num + ToPrimitive + Sealed + 'static,
实现 Element trait,提供图表的布局和渲染逻辑
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,
_: Option<&GlobalElementId>,
_: Option<&InspectorElementId>,
_: Bounds<Pixels>,
_: &mut Self::RequestLayoutState,
_: &mut Window,
_: &mut App,
) -> Self::PrepaintState
fn prepaint( &mut self, _: Option<&GlobalElementId>, _: Option<&InspectorElementId>, _: Bounds<Pixels>, _: &mut Self::RequestLayoutState, _: &mut Window, _: &mut App, ) -> Self::PrepaintState
预绘制阶段(图表不需要额外处理)
Source§fn paint(
&mut self,
_: Option<&GlobalElementId>,
_: Option<&InspectorElementId>,
bounds: Bounds<Pixels>,
_: &mut Self::RequestLayoutState,
_: &mut Self::PrepaintState,
window: &mut Window,
cx: &mut App,
)
fn paint( &mut self, _: Option<&GlobalElementId>, _: Option<&InspectorElementId>, bounds: Bounds<Pixels>, _: &mut Self::RequestLayoutState, _: &mut Self::PrepaintState, window: &mut Window, cx: &mut App, )
绘制阶段,委托给 Plot::paint 进行实际渲染
Source§type RequestLayoutState = ()
type RequestLayoutState = ()
Source§type PrepaintState = ()
type PrepaintState = ()
Element::prepaint 返回的状态类型。
此状态的可变引用会在后续的 Element::paint 中传递。Source§fn write_a11y_info(&self, _node: &mut Node)
fn write_a11y_info(&self, _node: &mut Node)
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: PartialEq + Into<SharedString> + 'static,
V: Copy + PartialOrd + Num + ToPrimitive + Sealed + 'static,
实现 IntoElement trait,使图表类型可直接作为元素使用
impl<T, B, V> IntoElement for BarChart<T, B, V>where
T: 'static,
B: PartialEq + Into<SharedString> + 'static,
V: Copy + PartialOrd + Num + ToPrimitive + Sealed + 'static,
实现 IntoElement trait,使图表类型可直接作为元素使用
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.Auto 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>
impl<T, B, V> Unpin for BarChart<T, B, V>where
T: Unpin,
impl<T, B, V> UnsafeUnpin for BarChart<T, B, V>
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§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