Ascii Graph

Draw beautiful graphs in ascii art!

Showcase

```rust use asciigraph::*;

fn main() { let mut g1 = Graph::default();

g1.set_1d_data(&vec![0, 1, 1, 0, 2, 0, 1, 2, 0, 0, 0, 1, 0, 1000])
.set_y_min(-1)
.set_y_max(3)
.set_plot_height(20)
.set_block_width(3)
.set_y_label_interval(1)
.set_title("HEllo World!123123123")
.set_paddings([1;4])
.set_big_title(true)
.set_x_axis_label("x_axis_label\nxz")
.set_y_axis_label("y_axis_label\nyy");

println!("{g1}");

let mut g2 = Graph::default();
g2.set_1d_data(&vec![0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16])
.set_plot_height(4)
.set_y_min("0.0")
.set_y_max(16.0)
.set_block_width(3)
.set_y_label_interval(1);

println!("{g2}");

let mut g3 = Graph::default();
g3.set_1d_data::<u32>(&vec![1])
.set_block_width(12);

println!("{g3}");

let mut g4 = Graph::default();
g4.set_1d_data(
    &vec![
        vec![32; 1024],
        vec![16, 1024],
        vec![32; 1024],
    ].concat()
);

println!("{g4}");

let mut g5 = Graph::default();
g5.set_1d_data(&vec![1001, 1002, 1003, 1004, 1003, 1002, 1001, 1, 2, 3, 1000, 1006]);

println!("{g5}");

let mut g6 = Graph::new(52, 26);
g6.set_2d_data_high_resolution(
    &(0..(52usize * 104)).map(
        |i| (i / 52, i % 52)
    ).filter(
        |(x, y)| {
            let d = x.abs_diff(52) * x.abs_diff(52) + y.abs_diff(26) * y.abs_diff(26) * 4;

            1200 < d && d < 2000
        }
    ).collect::<Vec<(usize, usize)>>(),
    &vec![None; 52],
    &vec![None; 26],
);

println!("{g6}");

let mut g7 = Graph::new(24, 24);
g7.set_block_width(5);
g7.set_1d_data(
    &vec![0, 0, 0, 5000, 0, 0, 0, 7000, 0]
);

let mut g8 = Graph::new(24, 24);
g8.set_block_width(5);
g8.set_skip_range(SkipValue::none());
g8.set_1d_data(
    &vec![0, 0, 0, 5000, 0, 0, 0, 7000, 0]
);

println!("{}", merge_horiz(
    &g7.to_string(),
    &g8.to_string(),
    Alignment::First,
    2
));

let mut g9 = Graph::new(24, 24);
g9.set_block_width(5)
.set_1d_data(
    &vec![
        0, 0, 0,
        60000,
        0, 0, 0,
        50000,
        0, 0,
        1200, 1500,
        0, 400
    ]
)
.set_y_min(0)
.set_pretty_y(50);

println!("{g9}");

} ```

```

▌ ▐ ▛▀▀ ▜▌ ▜▌ ▌ ▐ ▜▌ ▐ ▐▌ ▟▌ ▞▀▚ ▞▀▚ ▟▌ ▞▀▚ ▞▀▚ ▟▌ ▞▀▚ ▞▀▚ ▛▀▜ ▛▀▀ ▐▌ ▐▌ ▞▀▚ ▌▄▐ ▞▀▚ ▄▄ ▐▌ ▞▀▜ ▐▌ ▐▌ ▞ ▝▌ ▐▌ ▞ ▝▌ ▐▌ ▞ ▝▌ ▌ ▐ ▙▄▄ ▐▙ ▐▙ ▚▄▞ ▛ ▜ ▚▄▞ ▌ ▐▙ ▚▄▟ ▗▖ ▟▙ ▗▙▄ ▚▄▞ ▟▙ ▗▙▄ ▚▄▞ ▟▙ ▗▙▄ ▚▄▞

     y_axis_label                                                       
     yy                                                                 
        3│                                       ^^^                    
      2.8│                                       ███                    
      2.6│                                       ███                    
      2.4│                                       ███                    
      2.2│                                       ███                    
        2│            ███      ███               ███                    
      1.8│            ███      ███               ███                    
      1.6│            ███      ███               ███                    
      1.4│            ███      ███               ███                    
      1.2│            ███      ███               ███                    
        1│   ██████   ███   ██████         ███   ███                    
      0.8│   ██████   ███   ██████         ███   ███                    
      0.6│   ██████   ███   ██████         ███   ███                    
      0.4│   ██████   ███   ██████         ███   ███                    
      0.2│   ██████   ███   ██████         ███   ███                    
        0│██████████████████████████████████████████                    
     -0.2│██████████████████████████████████████████                    
     -0.4│██████████████████████████████████████████                    
     -0.6│██████████████████████████████████████████                    
     -0.8│██████████████████████████████████████████                    
         ╰──────────────────────────────────────────x_axis_label        
          0     2     4     6     8     10    12    xz                  
             1     3     5     7     9     11    13

16│ ▂▂▂▄▄▄▆▆▆███ 12│ ▂▂▂▄▄▄▆▆▆███████████████ 8│ ▂▂▂▄▄▄▆▆▆███████████████████████████ 4│ ▂▂▂▄▄▄▆▆▆███████████████████████████████████████ ╰─────────────────────────────────────────────────── 0 2 4 6 8 10 12 14 16 1 3 5 7 9 11 13 15
8│

7│

6│

5│

4│

3│

2│

1│████████████ │████████████ 0│████████████ │████████████ -1│████████████ │████████████ -2│████████████ │████████████ -3│████████████ │████████████ -4│████████████ │████████████ -5│████████████ │████████████ ╰──────────── 0

1086│

1055│

1024│ █
│ █
993│ █
│ █
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 34│ █
│ █
32│███████████████████████████████████████ ████████████████████████████████████████ │███████████████████████████████████████ ████████████████████████████████████████ 30│███████████████████████████████████████ ████████████████████████████████████████ │███████████████████████████████████████ ████████████████████████████████████████ 28│███████████████████████████████████████ ████████████████████████████████████████ │███████████████████████████████████████ ████████████████████████████████████████ 26│███████████████████████████████████████ ████████████████████████████████████████ │███████████████████████████████████████ ████████████████████████████████████████ 24│███████████████████████████████████████ ████████████████████████████████████████ │███████████████████████████████████████ ████████████████████████████████████████ 22│███████████████████████████████████████ ████████████████████████████████████████ │███████████████████████████████████████ ████████████████████████████████████████ 20│███████████████████████████████████████ ████████████████████████████████████████ │███████████████████████████████████████ ████████████████████████████████████████ 18│███████████████████████████████████████ ████████████████████████████████████████ │███████████████████████████████████████ ████████████████████████████████████████ 16│████████████████████████████████████████████████████████████████████████████████ ╰──────────────────────────────────────────────────────────────────────────────── 0 51 153 307 410 563 666 820 922 1076 1230 1383 1537 1691 1845
0 102 205 358 461 615 717 871 1024 1127 1281 1435 1588 1742 1896 1006│
│ ██████ 1005│ ██████ │ ██████ 1004│ ██████ │ ██████ 1004│ ▄▄▄▄▄▄▄ ██████ │ ███████ ██████ 1003│ ███████ ██████ │ ▄▄▄▄▄▄███████▄▄▄▄▄▄▄ ██████ 1002│ ████████████████████ ██████ │ ████████████████████ ██████ 1002│ ▆▆▆▆▆▆▆████████████████████▆▆▆▆▆▆ ██████ │ █████████████████████████████████ ██████ 1001│ █████████████████████████████████ ██████ │███████████████████████████████████████████████ ██████ 1000│███████████████████████████████████████████████ ██████ │███████████████████████████████████████████████ ▂▂▂▂▂▂▂██████ 999.9802│███████████████████████████████████████████████ █████████████ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3.125│███████████████████████████████████████████████ ▆▆▆▆▆▆▆█████████████ │███████████████████████████████████████████████ ████████████████████ 2.5625│███████████████████████████████████████████████ ████████████████████ │███████████████████████████████████████████████ ████████████████████ 2│███████████████████████████████████████████████ ██████████████████████████ │███████████████████████████████████████████████ ██████████████████████████ 1.4375│███████████████████████████████████████████████ ██████████████████████████ │███████████████████████████████████████████████▄▄▄▄▄▄▄██████████████████████████ ╰──────────────────────────────────────────────────────────────────────────────── 0 2 4 6 8 10
1 3 5 7 9 11


│ ▗▄▄▄▟███████▄▄▄▄
│ ▗▄▟███████████████████▄▄
│ ▗▄██████████▀▀▀▀▀▀▜█████████▙▄
│ ▗▟██████▛▀▘ ▀▀███████▄
│ ▄██████▀ ▝▜█████▙▖
│ ▟█████▀ ▝▜█████▖
│ ▟████▛ ▝█████▖
│ ▟████▛ ▝█████▖
│ ▐████▛ ▝█████
│ ▟████▘ ▜████▖
│ █████ ▐████▌
│ █████ ▐████▌
│ █████ ▐████▌
│ ▐████▌ █████
│ ▝█████▖ ▟████▛
│ ▝█████▖ ▟████▛
│ ▝█████▄ ▗▟████▛
│ ▝██████▄ ▗▟█████▛
│ ▜██████▄▖ ▄▟██████▘
│ ▝▜███████▙▄▄▄ ▗▄▄▄████████▀
│ ▀▜███████████████████████▀▘
│ ▝▀▜███████████████▀▀
│ ▝▀▀▀▀▀▀▀

╰────────────────────────────────────────────────────

7123│ ▂▂▂▂▂ 7434│
│ █████ │ ▆▆▆▆▆
6842│ █████ 6778│ █████
│ █████ │ █████
6561│ █████ 6122│ █████
│ █████ │ █████
6280│ █████ 5466│ █████
│ █████ │ ▆▆▆▆▆ █████
5999│ █████ 4810│ █████ █████
│ █████ │ █████ █████
5718│ █████ 4154│ █████ █████
│ █████ │ █████ █████
5437│ █████ 3498│ █████ █████
│ █████ │ █████ █████
5156│ █████ 2842│ █████ █████
│ █████ █████ │ █████ █████
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2186│ █████ █████
314│ █████ █████ │ █████ █████
│ █████ █████ 1530│ █████ █████
135│ █████ █████ │ █████ █████
│▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█████▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█████▄▄▄▄▄ 874.5│ █████ █████
-44│█████████████████████████████████████████████ │ █████ █████
│█████████████████████████████████████████████ 218.5│▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█████▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█████▄▄▄▄▄ -223│█████████████████████████████████████████████ │█████████████████████████████████████████████ ╰───────────────────────────────────────────── ╰───────────────────────────────────────────── 0 2 4 6 8 0 2 4 6 8
1 3 5 7 1 3 5 7
60600│ ▆▆▆▆▆
│ █████
57400│ █████
│ █████
54200│ █████
│ █████
51000│ █████ ▄▄▄▄▄
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1600│ █████ █████
│ █████ █████ █████
1400│ █████ █████ █████
│ █████ █████ █████
1200│ █████ █████ ██████████
│ █████ █████ ██████████
1000│ █████ █████ ██████████
│ █████ █████ ██████████
800│ █████ █████ ██████████
│ █████ █████ ██████████
600│ █████ █████ ██████████
│ █████ █████ ██████████
400│ █████ █████ ██████████ █████ │ █████ █████ ██████████ █████ 200│ █████ █████ ██████████ █████ │ █████ █████ ██████████ █████ ╰────────────────────────────────────────────────────────────────────── 0 2 4 6 8 10 12
1 3 5 7 9 11 13

```