pub struct LineChart { /* private fields */ }Expand description
A line or scatter chart: one or more Series with a y axis, x axis
labels and a legend.
Charset::Braille(the default) plots 2×4 dots per cell.Charset::BlocksandCharset::Asciiplot at cell resolution, each series with its own marker (●◆▲■○, or*,+,o,x,.), lines drawn as a run of markers.- Series are told apart by colour (
chart.series.1to.5) and by marker: the legend shows each series’ marker in its colour. Braille dots carry no shape, so when the console shows no colour and there is more than one series, the chart plots at cell resolution with markers instead. - Every row and column of the plot stands for one exact value, at its
centre. Axis labels sit on evenly spaced rows and columns, and each
names the value of the row or column it is on. The scales round out to
a step that fits whole rows and columns (2, 5, 10, 25… a label apart),
unless you fix them with
y_rangeandx_range; then only rows whose value the format writes exactly are labelled (at least the two bounds). - It is
heightrows of plot (6 to 10 by default, the one the labels fit best) plus an axis line, a row of x labels and the legend. It fills the width it is given (orwidth); when that is short it drops the y labels, then the axes, and the x labels and legend are cut to fit.
use rich::Console;
use rich_ext::chart::{Charset, LineChart, Series};
let console = Console::builder().width(24).color_system(None).build();
let chart = LineChart::new()
.series(Series::from_values("load", [1.0, 3.0, 2.0, 5.0, 4.0]))
.height(6)
.charset(Charset::Ascii);
assert_eq!(
console.render_export(&chart),
concat!(
"6 + \n",
"5 + *** \n",
"4 + ** ***\n",
"3 + **** ** \n",
"2 + ** *** \n",
"1 +** \n",
" ++----+----+----+----+\n",
" 0 1 2 3 4\n",
"* load \n",
)
);Implementations§
Source§impl LineChart
impl LineChart
Sourcepub fn all_series(&self) -> &[Series]
pub fn all_series(&self) -> &[Series]
The series, in legend order.
Sourcepub fn height(self, rows: usize) -> Self
pub fn height(self, rows: usize) -> Self
Rows of plot, not counting the axis, x labels and legend (at least 1, at most 65535). By default the chart takes 6 to 10 rows, near 8, picking the height whose rows its y labels divide evenly.
Sourcepub fn x_range(self, min: f64, max: f64) -> Self
pub fn x_range(self, min: f64, max: f64) -> Self
Fix the x scale; points outside are clamped to its edges.
Sourcepub fn y_range(self, min: f64, max: f64) -> Self
pub fn y_range(self, min: f64, max: f64) -> Self
Fix the y scale; points outside are clamped to its edges.
Sourcepub fn charset(self, charset: Charset) -> Self
pub fn charset(self, charset: Charset) -> Self
Glyphs to draw with (default Charset::Auto: Braille).
Sourcepub fn legend(self, show: bool) -> Self
pub fn legend(self, show: bool) -> Self
Show the legend (default on, when any series has a name).
Sourcepub fn y_format(self, format: ValueFormat) -> Self
pub fn y_format(self, format: ValueFormat) -> Self
How the y axis writes values (default ValueFormat::Compact).
Sourcepub fn x_format(self, format: ValueFormat) -> Self
pub fn x_format(self, format: ValueFormat) -> Self
How the x axis writes values (default ValueFormat::Compact).
Trait Implementations§
Source§impl AccessibleText for LineChart
Line chart, 2 series, x from 0 to 23, y from 12 to 52, then a line
per series: its name and kind, then its facts (24 points, min 12, max 52, last 14, trend up). The ranges are the fixed ones, else the data’s.
impl AccessibleText for LineChart
Line chart, 2 series, x from 0 to 23, y from 12 to 52, then a line
per series: its name and kind, then its facts (24 points, min 12, max 52, last 14, trend up). The ranges are the fixed ones, else the data’s.
Source§fn accessible_text(&self, _width: usize) -> String
fn accessible_text(&self, _width: usize) -> String
width where layout matters.Source§impl Renderable for LineChart
impl Renderable for LineChart
fn rich_render( &self, console: &Console, options: &ConsoleOptions, ) -> Vec<Segment>
Source§fn measure(&self, _console: &Console, options: &ConsoleOptions) -> Measurement
fn measure(&self, _console: &Console, options: &ConsoleOptions) -> Measurement
(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
fn fit_to_measurement(&self) -> bool
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>
fn vertical(&self) -> Option<VerticalAlign>
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
fn print_end_line(&self, _options: &ConsoleOptions) -> bool
"\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.