Skip to content

orhanbalci/rasciigraph

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rasciigraph

Tiny Rust library to draw pretty line graphs using ascii characters.

Usage

Add this to your Cargo.toml

[dependencies]
rasciigraph = "0.2"

Add this line of code to top of your source code

extern crate rasciigraph;

If you prefer to use Rust 2018 edition you may prefer to add this line to your source code

use rasciigraph::{plot, Config}

Examples

This code

extern crate rasciigraph;

use rasciigraph::{plot, Config};

fn main() {
    println!(
        "{}",
        plot(
            vec![
                0.0, 0.0, 0.0, 0.0, 1.5, 0.0, 0.0, -0.5, 9.0, -3.0, 0.0, 0.0, 1.0, 2.0, 1.0, 0.0,
                0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 0.0, 0.0, -0.5, 8.0, -3.0, 0.0, 0.0, 1.0,
                2.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 0.0, 0.0, -0.5, 10.0, -3.0,
                0.0, 0.0, 1.0, 2.0, 1.0, 0.0, 0.0, 0.0, 0.0
            ],
            Config::default()
                .with_offset(10)
                .with_height(10)
                .with_caption("I'm a doctor, not an engineer.".to_string())
        )
    );
}

Produces an output like this

  10.00   ┤                                             ╭╮          
  8.70    ┤       ╭╮                                    ││          
  7.40    ┼       ││                 ╭╮                 ││          
  6.10    ┤       ││                 ││                 ││          
  4.80    ┤       ││                 ││                 ││          
  3.50    ┤       ││                 ││                 ││          
  2.20    ┤       ││   ╭╮            ││   ╭╮            ││   ╭╮     
  0.90    ┤   ╭╮  ││  ╭╯╰╮       ╭╮  ││  ╭╯╰╮       ╭╮  ││  ╭╯╰╮    
 -0.40    ┼───╯╰──╯│╭─╯  ╰───────╯╰──╯│╭─╯  ╰───────╯╰──╯│╭─╯  ╰─── 
 -1.70    ┤        ││                 ││                 ││         
 -3.00    ┤        ╰╯                 ╰╯                 ╰╯        
             I'm a doctor, not an engineer.

With 0.2.0 version you can also plot multi series

fn main() {
    let res = rasciigraph::plot_many(
        vec![
            vec![0.0f64, 1.0, 0.0],
            vec![2.0, 3.0, 4.0, 3.0, 2.0],
            vec![4.0, 5.0, 6.0, 7.0, 6.0, 5.0, 4.0],
        ],
        rasciigraph::Config::default().with_width(21),
    );
    print!("{}", res);
}

This is the output

 7.00 ┤        ╭──╮
 6.00 ┤    ╭───╯  ╰───╮
 5.00 ┤ ╭──╯          ╰──╮
 4.00 ┼─╯  ╭───╮         ╰─
 3.00 ┤ ╭──╯   ╰──╮
 2.00 ┼─╯         ╰──
 1.00 ┤ ╭───╮
 0.00 ┼─╯   ╰─            

Acknowledgement

This crate is rustlang port of library asciigraph written by @guptarohit.

Above library is also port of library asciichart written by @kroitor.

About

Zero dependency Rust crate to make lightweight ASCII line graph ╭┈╯ in command line apps with no other dependencies.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages