Skip to main content

PieChart

Struct PieChart 

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

Shares of a whole as slices of a disc, clockwise from the top, with a legend naming each slice and its percentage; with donut, a ring with a hole, and text in the hole.

  • Slice N takes the theme style chart.series.N (they cycle), or its own Slice::style.
  • Charset::Blocks (the default) draws with half blocks (▀▄█): two pixels a cell, each slice’s colour, so two slices can share a cell. Without colour it draws a cell a slice, each slice in its own fill (█░▓▒▚▞), and the legend shows the fills.
  • Charset::Braille draws 2×4 dots a cell and leaves the dots on the edges between slices out, so the slices read as wedges without colour too; a cell takes the colour of the slice with most of its dots.
  • Charset::Ascii draws a cell a slice in #+@:%=o*, and is what an ASCII-only console gets whatever was asked for.
  • The disc is height rows tall (default: the height it is given, or 8) and twice that wide, so it looks round. The legend goes beside it when there is room, under it otherwise; given less width than the disc, the disc shrinks.
  • A value that is not a finite number above zero takes no part of the disc; the legend writes - for its percentage. A slice too small for a cell is still in the legend.
use rich::Console;
use rich_ext::chart::{Charset, PieChart};

let console = Console::builder().width(40).color_system(None).build();
let pie = PieChart::from_pairs([("api", 50.0), ("web", 30.0), ("cron", 20.0)])
    .height(4)
    .charset(Charset::Ascii);
assert_eq!(
    console.render_export(&pie),
    concat!(
        " @@@###   # api   50.0%\n",
        "+@@@####  + web   30.0%\n",
        "++++####  @ cron  20.0%\n",
        " +++###                \n",
    )
);

Implementations§

Source§

impl PieChart

Source

pub fn new() -> Self

An empty chart; add slices with slice.

Source

pub fn from_pairs<L: Into<String>>( pairs: impl IntoIterator<Item = (L, f64)>, ) -> Self

A chart of (label, value) pairs.

Source

pub fn slice(self, label: impl Into<String>, value: f64) -> Self

Add a slice.

Source

pub fn push(self, slice: Slice) -> Self

Add a Slice built with its own style.

Source

pub fn slices(&self) -> &[Slice]

The slices, in order (clockwise from the top).

Source

pub fn donut(self, hole: f64) -> Self

Draw a ring: hole is the hole’s share of the radius (0 for a pie, at most 0.9; 0.5 is a common donut).

Source

pub fn centre_text(self, text: impl Into<String>) -> Self

Text written in a donut’s hole, such as the total, when it fits.

Source

pub fn height(self, rows: usize) -> Self

Rows for the disc (at least 1); it is twice as many cells wide.

Source

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

Glyphs to draw with (default Charset::Auto: half blocks).

Source

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

Show the legend (default on).

Source

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

Write each slice’s percentage in the legend (default on).

Source

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

Write each slice’s value in the legend (default off).

Source

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

How values are written (default ValueFormat::Compact).

Source

pub fn shares(&self) -> Vec<Option<f64>>

Each slice’s share of the whole (0 to 1), None for one that takes no part.

Trait Implementations§

Source§

impl AccessibleText for PieChart

Pie chart, 3 slices, total 100, then every slice (up to six) with its value and percentage, or the three largest and the smallest. A donut says Donut chart.

Source§

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

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

impl Clone for PieChart

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 PieChart

Source§

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

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

impl Default for PieChart

Source§

fn default() -> Self

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

impl Draw for PieChart

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 PieChart

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 PieChart

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 PieChart

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