pub struct BarChart<'a> { /* private fields */ }Expand description
A chart showing values as bars.
Here is a possible BarChart output.
┌─────────────────────────────────┐
│ ████│
│ ▅▅▅▅ ████│
│ ▇▇▇▇ ████ ████│
│ ▄▄▄▄ ████ ████ ████ ████│
│▆10▆ █20█ █50█ █40█ █60█ █90█│
│ B1 B2 B1 B2 B1 B2 │
│ Group1 Group2 Group3 │
└─────────────────────────────────┘A BarChart is composed of a set of Bar which can be set via BarChart::data.
Bars can be styled globally (BarChart::bar_style) or individually (Bar::style).
There are other methods available to style even more precisely. See Bar to find out about
each bar component.
The BarChart widget can also show groups of bars via BarGroup.
A BarGroup is a set of Bar, multiple can be added to a BarChart using
BarChart::data multiple time as demonstrated in the example below.
The chart can have a Direction (by default the bars are Vertical).
This is set using BarChart::direction.
Note: this is the only widget that doesn’t implement Widget for &T because the current
implementation modifies the internal state of self. This will be fixed in the future.
§Examples
The following example creates a BarChart with two groups of bars.
The first group is added by an array slice (&[(&str, u64)]).
The second group is added by a BarGroup instance.
use ratatui::style::{Style, Stylize};
use ratatui::widgets::{Bar, BarChart, BarGroup, Block};
BarChart::default()
.block(Block::bordered().title("BarChart"))
.bar_width(3)
.bar_gap(1)
.group_gap(3)
.bar_style(Style::new().yellow().on_red())
.value_style(Style::new().red().bold())
.label_style(Style::new().white())
.data(&[("A0", 0), ("A1", 2), ("A2", 4), ("A3", 3)])
.data(BarGroup::new([
Bar::with_label("B0", 10),
Bar::with_label("B2", 20),
]))
.max(4);For simpler usages, you can also create a BarChart simply by
use ratatui::widgets::{Bar, BarChart};
BarChart::new([Bar::with_label("A", 10), Bar::with_label("B", 20)]);Implementations§
Source§impl<'a> BarChart<'a>
impl<'a> BarChart<'a>
Sourcepub fn new<T>(bars: T) -> BarChart<'a>
pub fn new<T>(bars: T) -> BarChart<'a>
Creates a new vertical BarChart widget with the given bars.
The bars parameter accepts any type that can be converted into a Vec<Bar>.
§Examples
use ratatui::layout::Direction;
use ratatui::widgets::{Bar, BarChart};
BarChart::new(vec![Bar::with_label("A", 10), Bar::with_label("B", 10)]);Sourcepub fn vertical(bars: impl Into<Vec<Bar<'a>>>) -> BarChart<'a>
pub fn vertical(bars: impl Into<Vec<Bar<'a>>>) -> BarChart<'a>
Creates a new BarChart widget with a vertical direction.
This function is equivalent to BarChart::new().
Sourcepub fn horizontal(bars: impl Into<Vec<Bar<'a>>>) -> BarChart<'a>
pub fn horizontal(bars: impl Into<Vec<Bar<'a>>>) -> BarChart<'a>
Creates a new BarChart widget with a horizontal direction.
§Examples
use ratatui::widgets::{Bar, BarChart};
BarChart::horizontal(vec![Bar::with_label("A", 10), Bar::with_label("B", 20)]);Sourcepub fn grouped<T>(groups: T) -> BarChart<'a>
pub fn grouped<T>(groups: T) -> BarChart<'a>
Creates a new BarChart widget with a group of bars.
§Examples
use ratatui::widgets::{Bar, BarChart, BarGroup};
BarChart::grouped(vec![
BarGroup::with_label(
"Group 1",
vec![Bar::with_label("A", 10), Bar::with_label("B", 20)],
),
BarGroup::with_label(
"Group 2",
[Bar::with_label("C", 30), Bar::with_label("D", 40)],
),
]);Sourcepub fn data(self, data: impl Into<BarGroup<'a>>) -> BarChart<'a>
pub fn data(self, data: impl Into<BarGroup<'a>>) -> BarChart<'a>
Add group of bars to the BarChart
§Examples
The following example creates a BarChart with two groups of bars.
The first group is added by an array slice (&[(&str, u64)]).
The second group is added by a BarGroup instance.
use ratatui::widgets::{Bar, BarChart, BarGroup};
BarChart::default()
.data(&[("B0", 0), ("B1", 2), ("B2", 4), ("B3", 3)])
.data(BarGroup::new([
Bar::with_label("A", 10),
Bar::with_label("B", 20),
]));Sourcepub const fn max(self, max: u64) -> BarChart<'a>
pub const fn max(self, max: u64) -> BarChart<'a>
Set the value necessary for a Bar to reach the maximum height.
If not set, the maximum value in the data is taken as reference.
§Examples
This example shows the default behavior when max is not set.
The maximum value in the dataset is taken (here, 100).
use ratatui::widgets::BarChart;
BarChart::default().data(&[("foo", 1), ("bar", 2), ("baz", 100)]);
// Renders
// █
// █
// f b bThis example shows a custom max value.
The maximum height being 2, bar & baz render as the max.
use ratatui::widgets::BarChart;
BarChart::default()
.data(&[("foo", 1), ("bar", 2), ("baz", 100)])
.max(2);
// Renders
// █ █
// █ █ █
// f b bSourcepub fn bar_style<S>(self, style: S) -> BarChart<'a>
pub fn bar_style<S>(self, style: S) -> BarChart<'a>
Set the default style of the bar.
style accepts any type that is convertible to Style (e.g. Style, Color, or
your own type that implements Into<Style>).
It is also possible to set individually the style of each Bar.
In this case the default style will be patched by the individual style
Sourcepub const fn bar_width(self, width: u16) -> BarChart<'a>
pub const fn bar_width(self, width: u16) -> BarChart<'a>
Set the width of the displayed bars.
For Horizontal bars this becomes the height
of the bar.
If not set, this defaults to 1.
The bar label also uses this value as its width.
Sourcepub const fn bar_gap(self, gap: u16) -> BarChart<'a>
pub const fn bar_gap(self, gap: u16) -> BarChart<'a>
Set the gap between each bar.
If not set, this defaults to 1.
The bar label will never be larger than the bar itself, even if the gap is sufficient.
§Example
This shows two bars with a gap of 3. Notice the labels will always stay under the bar.
use ratatui::widgets::BarChart;
BarChart::default()
.data(&[("foo", 1), ("bar", 2)])
.bar_gap(3);
// Renders
// █
// █ █
// f bSourcepub const fn bar_set(self, bar_set: Set<'a>) -> BarChart<'a>
pub const fn bar_set(self, bar_set: Set<'a>) -> BarChart<'a>
The bar::Set to use for displaying the bars.
If not set, the default is bar::NINE_LEVELS.
Sourcepub fn value_style<S>(self, style: S) -> BarChart<'a>
pub fn value_style<S>(self, style: S) -> BarChart<'a>
Set the default value style of the bar.
style accepts any type that is convertible to Style (e.g. Style, Color, or
your own type that implements Into<Style>).
It is also possible to set individually the value style of each Bar.
In this case the default value style will be patched by the individual value style
§See also
Bar::value_style to set the value style individually.
Sourcepub fn label_style<S>(self, style: S) -> BarChart<'a>
pub fn label_style<S>(self, style: S) -> BarChart<'a>
Set the default label style of the groups and bars.
style accepts any type that is convertible to Style (e.g. Style, Color, or
your own type that implements Into<Style>).
It is also possible to set individually the label style of each Bar or BarGroup.
In this case the default label style will be patched by the individual label style
§See also
Bar::label to set the label style individually.
Trait Implementations§
impl<'a> Eq for BarChart<'a>
impl<'a> StructuralPartialEq for BarChart<'a>
Auto Trait Implementations§
impl<'a> Freeze for BarChart<'a>
impl<'a> RefUnwindSafe for BarChart<'a>
impl<'a> Send for BarChart<'a>
impl<'a> Sync for BarChart<'a>
impl<'a> Unpin for BarChart<'a>
impl<'a> UnwindSafe for BarChart<'a>
Blanket Implementations§
Source§impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
Source§fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
Source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
Source§impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
Source§fn arrays_from(colors: C) -> T
fn arrays_from(colors: C) -> T
Source§impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
Source§fn arrays_into(self) -> C
fn arrays_into(self) -> C
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<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
Source§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn cam16_into_unclamped(
self,
parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>,
) -> T
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
Source§fn components_from(colors: C) -> T
fn components_from(colors: C) -> T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> FromAngle<T> for T
impl<T> FromAngle<T> for T
Source§fn from_angle(angle: T) -> T
fn from_angle(angle: T) -> T
angle.Source§impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
Source§fn from_stimulus(other: U) -> T
fn from_stimulus(other: U) -> T
other into Self, while performing the appropriate scaling,
rounding and clamping.Source§impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
Source§fn into_angle(self) -> U
fn into_angle(self) -> U
T.Source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
Source§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn into_cam16_unclamped(
self,
parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>,
) -> T
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
Source§fn into_color(self) -> U
fn into_color(self) -> U
Source§impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
Source§fn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
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 moreSource§impl<T> IntoStimulus<T> for T
impl<T> IntoStimulus<T> for T
Source§fn into_stimulus(self) -> T
fn into_stimulus(self) -> T
self into T, while performing the appropriate scaling,
rounding and clamping.Source§impl<T, U> Stylize<'_, T> for Uwhere
U: Styled<Item = T>,
impl<T, U> Stylize<'_, T> for Uwhere
U: Styled<Item = T>,
fn bg<C>(self, color: C) -> T
fn fg<C>(self, color: C) -> T
fn add_modifier(self, modifier: Modifier) -> T
fn remove_modifier(self, modifier: Modifier) -> T
fn reset(self) -> T
Source§fn on_magenta(self) -> T
fn on_magenta(self) -> T
magenta.Source§fn on_dark_gray(self) -> T
fn on_dark_gray(self) -> T
dark_gray.Source§fn on_light_red(self) -> T
fn on_light_red(self) -> T
light_red.Source§fn light_green(self) -> T
fn light_green(self) -> T
light_green.Source§fn on_light_green(self) -> T
fn on_light_green(self) -> T
light_green.Source§fn light_yellow(self) -> T
fn light_yellow(self) -> T
light_yellow.Source§fn on_light_yellow(self) -> T
fn on_light_yellow(self) -> T
light_yellow.Source§fn light_blue(self) -> T
fn light_blue(self) -> T
light_blue.Source§fn on_light_blue(self) -> T
fn on_light_blue(self) -> T
light_blue.Source§fn light_magenta(self) -> T
fn light_magenta(self) -> T
light_magenta.Source§fn on_light_magenta(self) -> T
fn on_light_magenta(self) -> T
light_magenta.Source§fn light_cyan(self) -> T
fn light_cyan(self) -> T
light_cyan.Source§fn on_light_cyan(self) -> T
fn on_light_cyan(self) -> T
light_cyan.Source§fn not_italic(self) -> T
fn not_italic(self) -> T
italic modifier.Source§fn underlined(self) -> T
fn underlined(self) -> T
underlined modifier.Source§fn not_underlined(self) -> T
fn not_underlined(self) -> T
underlined modifier.Source§fn slow_blink(self) -> T
fn slow_blink(self) -> T
slow_blink modifier.Source§fn not_slow_blink(self) -> T
fn not_slow_blink(self) -> T
slow_blink modifier.Source§fn rapid_blink(self) -> T
fn rapid_blink(self) -> T
rapid_blink modifier.Source§fn not_rapid_blink(self) -> T
fn not_rapid_blink(self) -> T
rapid_blink modifier.Source§fn not_reversed(self) -> T
fn not_reversed(self) -> T
reversed modifier.hidden modifier.hidden modifier.Source§fn crossed_out(self) -> T
fn crossed_out(self) -> T
crossed_out modifier.Source§fn not_crossed_out(self) -> T
fn not_crossed_out(self) -> T
crossed_out modifier.Source§impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
Source§type Error = <C as TryFromComponents<T>>::Error
type Error = <C as TryFromComponents<T>>::Error
try_into_colors fails to cast.Source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
Source§impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
Source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
OutOfBounds error is returned which contains
the unclamped color. Read more