pub struct Sparkline<'a> { /* private fields */ }
Expand description
Widget to render a sparkline over one or more lines.
Each bar in a Sparkline
represents a value from the provided dataset. The height of the bar
is determined by the value in the dataset.
You can create a Sparkline
using Sparkline::default
.
The data is set using Sparkline::data
. The data can be a slice of u64
, Option<u64>
, or a
SparklineBar
. For the Option<u64>
and SparklineBar
cases, a data point with a value
of None
is interpreted an as the absence of a value.
Sparkline
can be styled either using Sparkline::style
or preferably using the methods
provided by the Stylize
trait. The style may be set for the entire
widget or for individual bars by setting individual SparklineBar::style
.
The bars are rendered using a set of symbols. The default set is symbols::bar::NINE_LEVELS
.
You can change the set using Sparkline::bar_set
.
If the data provided is a slice of u64
or Option<u64>
, the bars will be styled with the
style of the sparkline. If the data is a slice of SparklineBar
, the bars will be
styled with the style of the sparkline combined with the style provided in the SparklineBar
if it is set, otherwise the sparkline style will be used.
Absent values and will be rendered with the style set by Sparkline::absent_value_style
and
the symbol set by Sparkline::absent_value_symbol
.
§Setter methods
Sparkline::block
wraps the sparkline in aBlock
Sparkline::data
defines the dataset, you’ll almost always want to use itSparkline::max
sets the maximum value of barsSparkline::direction
sets the render direction
§Examples
use ratatui::{
style::{Color, Style, Stylize},
symbols,
widgets::{Block, RenderDirection, Sparkline},
};
Sparkline::default()
.block(Block::bordered().title("Sparkline"))
.data(&[0, 2, 3, 4, 1, 4, 10])
.max(5)
.direction(RenderDirection::RightToLeft)
.style(Style::default().red().on_white())
.absent_value_style(Style::default().fg(Color::Red))
.absent_value_symbol(symbols::shade::FULL);
Implementations§
Source§impl<'a> Sparkline<'a>
impl<'a> Sparkline<'a>
Sourcepub fn style<S: Into<Style>>(self, style: S) -> Self
pub fn style<S: Into<Style>>(self, style: S) -> Self
Sets the style of the entire widget.
style
accepts any type that is convertible to Style
(e.g. Style
, Color
, or
your own type that implements Into<Style>
).
The foreground corresponds to the bars while the background is everything else.
Sourcepub fn absent_value_style<S: Into<Style>>(self, style: S) -> Self
pub fn absent_value_style<S: Into<Style>>(self, style: S) -> Self
Sets the style to use for absent values.
Absent values are values in the dataset that are None
.
style
accepts any type that is convertible to Style
(e.g. Style
, Color
, or
your own type that implements Into<Style>
).
The foreground corresponds to the bars while the background is everything else.
Sourcepub fn absent_value_symbol(self, symbol: impl Into<String>) -> Self
pub fn absent_value_symbol(self, symbol: impl Into<String>) -> Self
Sets the symbol to use for absent values.
Absent values are values in the dataset that are None
.
The default is symbols::shade::EMPTY
.
Sourcepub fn data<T>(self, data: T) -> Self
pub fn data<T>(self, data: T) -> Self
Sets the dataset for the sparkline.
Each item in the dataset is a bar in the sparkline. The height of the bar is determined by the value in the dataset.
The data can be a slice of u64
, Option<u64>
, or a SparklineBar
. For the
Option<u64>
and SparklineBar
cases, a data point with a value of None
is
interpreted an as the absence of a value.
If the data provided is a slice of u64
or Option<u64>
, the bars will be styled with the
style of the sparkline. If the data is a slice of SparklineBar
, the bars will be
styled with the style of the sparkline combined with the style provided in the
SparklineBar
if it is set, otherwise the sparkline style will be used.
Absent values and will be rendered with the style set by Sparkline::absent_value_style
and the symbol set by Sparkline::absent_value_symbol
.
§Examples
Create a Sparkline
from a slice of u64
:
use ratatui::{layout::Rect, widgets::Sparkline, Frame};
let sparkline = Sparkline::default().data(&[1, 2, 3]);
frame.render_widget(sparkline, area);
Create a Sparkline
from a slice of Option<u64>
such that some bars are absent:
let data = vec![Some(1), None, Some(3)];
let sparkline = Sparkline::default().data(data);
frame.render_widget(sparkline, area);
Create a Sparkline
from a a Vec of SparklineBar
such that some bars are styled:
let data = vec![
SparklineBar::from(1).style(Some(Style::default().fg(Color::Red))),
SparklineBar::from(2),
SparklineBar::from(3).style(Some(Style::default().fg(Color::Blue))),
];
let sparkline = Sparkline::default().data(data);
frame.render_widget(sparkline, area);
Sourcepub const fn max(self, max: u64) -> Self
pub const fn max(self, max: u64) -> Self
Sets the maximum value of bars.
Every bar will be scaled accordingly. If no max is given, this will be the max in the dataset.
Sourcepub const fn bar_set(self, bar_set: Set) -> Self
pub const fn bar_set(self, bar_set: Set) -> Self
Sets the characters used to display the bars.
Can be symbols::bar::THREE_LEVELS
, symbols::bar::NINE_LEVELS
(default) or a custom
Set
.
Sourcepub const fn direction(self, direction: RenderDirection) -> Self
pub const fn direction(self, direction: RenderDirection) -> Self
Sets the direction of the sparkline.
RenderDirection::LeftToRight
by default.
Trait Implementations§
Source§impl WidgetRef for Sparkline<'_>
impl WidgetRef for Sparkline<'_>
Source§fn render_ref(&self, area: Rect, buf: &mut Buffer)
fn render_ref(&self, area: Rect, buf: &mut Buffer)
impl<'a> Eq for Sparkline<'a>
impl<'a> StructuralPartialEq for Sparkline<'a>
Auto Trait Implementations§
impl<'a> Freeze for Sparkline<'a>
impl<'a> RefUnwindSafe for Sparkline<'a>
impl<'a> Send for Sparkline<'a>
impl<'a> Sync for Sparkline<'a>
impl<'a> Unpin for Sparkline<'a>
impl<'a> UnwindSafe for Sparkline<'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.