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},
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(&[("B0", 0), ("B1", 2), ("B2", 4), ("B3", 3)])
.data(BarGroup::default().bars(&[Bar::default().value(10), Bar::default().value(20)]))
.max(4);Implementations§
Source§impl<'a> BarChart<'a>
impl<'a> BarChart<'a>
Sourcepub fn data(self, data: impl Into<BarGroup<'a>>) -> Self
pub fn data(self, data: impl Into<BarGroup<'a>>) -> Self
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::default().bars(&[Bar::default().value(10), Bar::default().value(20)]));Sourcepub const fn max(self, max: u64) -> Self
pub const fn max(self, max: u64) -> Self
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: Into<Style>>(self, style: S) -> Self
pub fn bar_style<S: Into<Style>>(self, style: S) -> Self
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) -> Self
pub const fn bar_width(self, width: u16) -> Self
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) -> Self
pub const fn bar_gap(self, gap: u16) -> Self
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) -> Self
pub const fn bar_set(self, bar_set: Set) -> Self
The bar::Set to use for displaying the bars.
If not set, the default is bar::NINE_LEVELS.
Sourcepub fn value_style<S: Into<Style>>(self, style: S) -> Self
pub fn value_style<S: Into<Style>>(self, style: S) -> Self
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: Into<Style>>(self, style: S) -> Self
pub fn label_style<S: Into<Style>>(self, style: S) -> Self
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§
Source§impl WidgetRef for BarChart<'_>
impl WidgetRef for BarChart<'_>
Source§fn render_ref(&self, area: Rect, buf: &mut Buffer)
fn render_ref(&self, area: Rect, buf: &mut Buffer)
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<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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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> 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<'a, T, U> Stylize<'a, T> for Uwhere
U: Styled<Item = T>,
impl<'a, T, U> Stylize<'a, 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.