Crates.io | termplot |
lib.rs | termplot |
version | 0.1.1 |
source | src |
created_at | 2022-12-30 21:15:25.060574 |
updated_at | 2022-12-30 21:48:22.796243 |
description | An extensible plotting library for CLI applications. |
homepage | https://github.com/xavierhamel/termplot |
repository | https://github.com/xavierhamel/termplot |
max_upload_size | |
id | 748091 |
size | 212,175 |
An extensible plotting library for CLI applications.
Find the full documentation on doc.rs
To use termplot
, add the crate to your Cargo.toml
.
[dependencies]
termplot = "0.1.0"
Here is a quick example of what plotting sin(x) / x
looks like.
use termplot::*;
let mut plot = Plot::default();
plot.set_domain(Domain(-10.0..10.0))
.set_codomain(Domain(-0.3..1.2))
.set_title("Graph title")
.set_x_label("X axis")
.set_y_label("Y axis")
.set_size(Size::new(50, 25))
.add_plot(Box::new(plot::Graph::new(|x| x.sin() / x)));
println!("{plot}");
Output of the previous example:
use termplot::*;
use rand::Rng;
let mut rng = rand::thread_rng();
let values: Vec<f64> = (0..100).map(|_| rng.gen_range(0.0f64..10.0f64)).collect();
let mut plot = Plot::default();
plot.set_domain(Domain(0.0..11.0))
.set_codomain(Domain(0.0..45.0))
.set_title("Graph title")
.set_x_label("X axis")
.set_y_label("Y axis")
.set_size(Size::new(50, 25))
.add_plot(Box::new(plot::Historigram::new(
values,
vec![0.0..2.0, 2.0..4.0, 4.0..6.0, 6.0..8.0, 8.0..10.0],
)));
println!("{plot}");
Output of the previous example:
It is also possible to compose multiple plots:
use termplot::*;
use rand::Rng;
let mut rng = rand::thread_rng();
let values: Vec<f64> = (0..100).map(|_| rng.gen_range(0.0f64..10.0f64)).collect();
let mut plot = Plot::default();
plot.set_domain(Domain(0.0..11.0))
.set_codomain(Domain(0.0..45.0))
.set_title("Graph title")
.set_x_label("X axis")
.set_y_label("Y axis")
.set_size(Size::new(50, 25))
.add_plot(Box::new(plot::Historigram::new(
values,
vec![0.0..2.0, 2.0..4.0, 4.0..6.0, 6.0..8.0, 8.0..10.0],
)))
.add_plot(Box::new(plot::Graph::new(|x| {
-2.0 * (x - 5.0).powf(2.0) + 40.0
})));
println!("{plot}");
Output of the previous example:
MIT - Enjoy!