unicode_plot/lib.rs
1//! A Unicode terminal plotting library for Rust.
2//!
3//! This crate provides canvas-based rendering of plots using Unicode characters
4//! (braille, block elements, ASCII, dot, and density characters) for display in
5//! terminal emulators. It is a Rust port of the rendering layer from
6//! [`unicode_plot.rb`](https://github.com/red-data-tools/unicode_plot.rb) and
7//! [`UnicodePlots.jl`](https://github.com/JuliaPlots/UnicodePlots.jl).
8//!
9//! # Quick start
10//!
11//! ```
12//! use unicode_plot::{barplot, BarplotOptions};
13//!
14//! let plot = barplot(
15//! &["cat", "dog", "parrot"],
16//! &[30, 45, 12],
17//! BarplotOptions::default(),
18//! ).unwrap();
19//!
20//! let mut output = Vec::new();
21//! plot.render(&mut output, false).unwrap();
22//! let text = String::from_utf8(output).unwrap();
23//! assert!(text.contains("dog"));
24//! ```
25
26mod barplot;
27pub mod border;
28mod boxplot;
29pub mod canvas;
30pub mod color;
31pub mod graphics;
32mod histogram;
33mod lineplot;
34mod math;
35mod plot;
36mod render;
37
38pub use barplot::{
39 BarplotError, BarplotGraphics, BarplotOptions, barplot, barplot_add, parse_border_type,
40};
41pub use boxplot::{BoxplotError, BoxplotGraphics, BoxplotOptions, boxplot, boxplot_add};
42pub use histogram::{ClosedInterval, HistogramError, HistogramOptions, histogram};
43pub use lineplot::{
44 GridCanvas, LineplotError, LineplotOptions, LineplotSeriesOptions, StairStyle, annotate,
45 densityplot, densityplot_add, lineplot, lineplot_add, lineplot_add_slope, lineplot_add_y,
46 lineplot_y, scatterplot, scatterplot_add, scatterplot_add_y, scatterplot_y, stairs, stairs_add,
47};
48pub use plot::{Annotation, DecorationPosition, EdgeDecorations, Plot, PlotAnnotations};
49
50#[cfg(test)]
51mod test_util;