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 b
This 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 b
Sourcepub 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 b
Sourcepub 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.