Skip to main content

Heatmap

Struct Heatmap 

Source
pub struct Heatmap { /* private fields */ }
Expand description

A grid of values, one row per label and one column per header, each cell a shade from lowest to highest.

  • Values are scaled from the smallest to the largest (or range) into equal steps: five in blocks ( ░▒▓█), ten in ASCII ( .:-=+*#%@). The shade is the value, so the grid reads in black and white; with colour each step also takes a chart.heat.N style, cold to hot.
  • A NaN or infinite value is drawn · (? in ASCII), so a missing value never passes for a low one.
  • The legend under the grid shows the steps between the lowest and highest value of the scale.
  • Each cell is cell_width cells wide (2 by default). Column headers are written at their column’s first cell when they fit, leaving a space after the one before, so with narrow cells every second or third header shows.
  • Given less width, the cells narrow to one cell, then the row labels are cut, then neighbouring columns are merged (each shows the mean of its finite values) so every value still counts.
use rich::Console;
use rich_ext::chart::{Charset, Heatmap};

let console = Console::builder().width(40).color_system(None).build();
let map = Heatmap::new()
    .columns(["mon", "tue", "wed", "thu"])
    .row("api", [1.0, 4.0, 9.0, 2.0])
    .row("web", [0.0, 6.0, 8.0, f64::NAN])
    .cell_width(4)
    .charset(Charset::Ascii);
assert_eq!(
    console.render_export(&map),
    concat!(
        "    mon tue wed thu        \n",
        "api ....====@@@@::::       \n",
        "web     ****%%%%????       \n",
        "0 [ .:-=+*#%@] 9  ? no data\n",
    )
);

Implementations§

Source§

impl Heatmap

Source

pub fn new() -> Self

An empty heatmap; add rows with row.

Source

pub fn columns<S: Into<String>>( self, headers: impl IntoIterator<Item = S>, ) -> Self

The column headers.

Source

pub fn row( self, label: impl Into<String>, values: impl IntoIterator<Item = f64>, ) -> Self

Add a row of values, in column order.

Source

pub fn range(self, min: f64, max: f64) -> Self

Fix the scale; values outside it take the end shades.

Source

pub fn charset(self, charset: Charset) -> Self

Glyphs to draw with: Charset::Ascii asks for the ASCII shades; anything else draws blocks (ASCII on an ASCII-only console).

Source

pub fn cell_width(self, width: usize) -> Self

Cells per value (default 2, at least 1).

Source

pub fn legend(self, show: bool) -> Self

Show the legend (default on).

Source

pub fn format(self, format: ValueFormat) -> Self

How the legend writes the bounds (default ValueFormat::Compact).

Source

pub fn scale(&self) -> Scale

The scale every value is shaded on.

Trait Implementations§

Source§

impl AccessibleText for Heatmap

Heatmap, 2 rows by 4 columns, values from 0 to 9, 1 missing, then where the highest and lowest values are (Highest 9 at api, wed; lowest 0 at web, mon).

Source§

fn accessible_text(&self, _width: usize) -> String

The content as plain lines, laid out for width where layout matters.
Source§

impl Clone for Heatmap

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Heatmap

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Heatmap

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Draw for Heatmap

Source§

fn draw( &self, console: &Console, options: &ConsoleOptions, screen: &mut Screen, rect: Rect, )

Draw into rect of screen, rendered with options (its width and height are the rectangle’s): the cells screen.write_lines(rect, &console.render_lines(self, options, false)) would give.
Source§

impl PartialEq for Heatmap

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Renderable for Heatmap

Source§

fn rich_render( &self, console: &Console, options: &ConsoleOptions, ) -> Vec<Segment>

Source§

fn measure(&self, console: &Console, options: &ConsoleOptions) -> Measurement

The (minimum, maximum) cell width this renderable wants. Port of __rich_measure__. The default is what upstream’s Measurement.get returns for a renderable without one: anything from nothing to the whole width, (0, max_width).
Source§

fn fit_to_measurement(&self) -> bool

Whether a top-level Console::print shrinks this renderable to its measured width. Upstream renders every top-level renderable at the full console width, so the default is false; an extension may opt in.
Source§

fn vertical(&self) -> Option<VerticalAlign>

The vertical alignment a Table cell holding this renderable uses in place of its column’s. Upstream reads getattr(renderable, "vertical", None); Align sets it.
Source§

fn print_end_line(&self, _options: &ConsoleOptions) -> bool

Whether a top-level print ends this renderable’s last line. This port’s renderables separate lines, where upstream’s end each line with "\n", so a print adds the final line break. A renderable whose upstream output stops without one (Screen, LiveRender, a Rule whose end has no newline) returns false, and the next output continues its last line. options are the print’s options.
Source§

impl StructuralPartialEq for Heatmap

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more