pub struct RadarChart<T, Y>where
T: 'static,
Y: PlotValue,{ /* private fields */ }Expand description
A radar (spider) chart.
Each datum is one dimension (a spoke), placed clockwise around the center
starting at 12 o’clock. Add one series per RadarChart::value call; each
series is drawn as a closed polygon connecting its values on every spoke.
Implementations§
Source§impl<T, Y> RadarChart<T, Y>where
Y: PlotValue,
impl<T, Y> RadarChart<T, Y>where
Y: PlotValue,
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 dot per series marks the hovered dimension, and a tooltip shows a row each. 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 name of the most recently added series, shown in its tooltip row.
Call after the matching RadarChart::value
(e.g. .value(..).stroke(..).name("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 dimension label.
Sourcepub fn tooltip_value(
self,
value: impl Fn(&T, usize, f64) -> SharedString + 'static,
) -> Self
pub fn tooltip_value( self, value: impl Fn(&T, usize, f64) -> SharedString + 'static, ) -> Self
Set the text of each tooltip row’s value; the raw number by default.
The closure receives the datum, the row’s index (the series’ index in the order value
added them) and the value the row reads.
Sourcepub fn tooltip_value_color<H>(
self,
color: impl Fn(&T, usize, f64) -> H + 'static,
) -> Self
pub fn tooltip_value_color<H>( self, color: impl Fn(&T, usize, f64) -> H + 'static, ) -> Self
Color each 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 dots and where the box sits stay the chart’s, and
tooltip_title, tooltip_value
and tooltip_value_color no longer apply.
Sourcepub fn value(self, value: impl Fn(&T) -> Y + 'static) -> Self
pub fn value(self, value: impl Fn(&T) -> Y + 'static) -> Self
Add a series to the radar chart.
Call multiple times to overlay multiple series, each paired with the
matching RadarChart::stroke and RadarChart::fill calls.
Sourcepub fn stroke(self, stroke: impl Into<Hsla>) -> Self
pub fn stroke(self, stroke: impl Into<Hsla>) -> Self
Set the stroke color of the most recently added series.
Defaults to the theme chart colors, cycled per series.
Sourcepub fn fill(self, fill: impl Into<Background>) -> Self
pub fn fill(self, fill: impl Into<Background>) -> Self
Set the fill color of the most recently added series.
Defaults to the series stroke color with 0.3 opacity.
Sourcepub fn label<L>(self, label: impl Fn(&T) -> L + 'static) -> Selfwhere
L: Into<RadarLabel> + 'static,
pub fn label<L>(self, label: impl Fn(&T) -> L + 'static) -> Selfwhere
L: Into<RadarLabel> + 'static,
Set the label for each dimension, shown outside the outer ring.
Return a string for a plain text label, or element.into_any_element()
for a custom one; see RadarLabel for how the two differ.
RadarChart::new(data).label(|d| d.month.clone())
RadarChart::new(data).label(|d| {
v_flex()
.items_center()
.child(Icon::new(IconName::Star).xsmall())
.child(d.month.clone())
.into_any_element()
})Sourcepub fn label_color(self, color: impl Into<Hsla>) -> Self
pub fn label_color(self, color: impl Into<Hsla>) -> Self
Set the text label color (defaults to cx.theme().muted_foreground).
Element labels style themselves; this does not apply to them.
Sourcepub fn label_gap(self, gap: f32) -> Self
pub fn label_gap(self, gap: f32) -> Self
Set the extra gap between the outer ring and the labels (defaults to 10px).
Sourcepub fn max_value(self, max_value: Y) -> Self
pub fn max_value(self, max_value: Y) -> Self
Set the value at the outer ring.
Defaults to the maximum value across all series.
Sourcepub fn outer_radius(self, outer_radius: f32) -> Self
pub fn outer_radius(self, outer_radius: f32) -> Self
Set the outer radius of the radar chart.
Defaults to 40% of the bounds height.
Sourcepub fn grid_levels(self, grid_levels: usize) -> Self
pub fn grid_levels(self, grid_levels: usize) -> Self
Set the number of concentric grid rings (defaults to 4).
Trait Implementations§
Source§impl<T, Y> IntoElement for RadarChart<T, Y>where
T: 'static,
Y: PlotValue,
impl<T, Y> IntoElement for RadarChart<T, Y>where
T: 'static,
Y: PlotValue,
Source§type Element = PlotElement<RadarChart<T, Y>>
type Element = PlotElement<RadarChart<T, Y>>
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, Y> Plot for RadarChart<T, Y>where
Y: PlotValue,
impl<T, Y> Plot for RadarChart<T, Y>where
Y: PlotValue,
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>
Resolve every dimension’s label, keeping the text ones for paint and
laying out the element ones here (measuring is illegal in paint).
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, Y> !RefUnwindSafe for RadarChart<T, Y>
impl<T, Y> !Send for RadarChart<T, Y>
impl<T, Y> !Sync for RadarChart<T, Y>
impl<T, Y> !UnwindSafe for RadarChart<T, Y>
impl<T, Y> Freeze for RadarChart<T, Y>
impl<T, Y> Unpin for RadarChart<T, Y>
impl<T, Y> UnsafeUnpin for RadarChart<T, Y>where
Vec<T>: UnsafeUnpin,
Vec<Rc<dyn Fn(&T) -> Y>>: UnsafeUnpin,
TooltipContent<T>: UnsafeUnpin,
Option<Rc<dyn Fn(&T) -> RadarLabel>>: UnsafeUnpin,
Option<Y>: 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