37 releases
0.10.1 | Sep 23, 2024 |
---|---|
0.10.0 | Jul 24, 2024 |
0.9.3 | May 15, 2024 |
0.8.3 | Oct 4, 2023 |
0.6.0 | Mar 22, 2023 |
#290 in Text processing
31 downloads per month
155KB
2.5K
SLoC
Ascii Graph
Draw beautiful graphs in ascii art!
Showcase
use asciigraph::*;
use hmath::Ratio;
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_margin(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_margin(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<_>>(),
&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(),
ColorMode::None,
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}");
let mut g10 = Graph::new(72, 24);
g10.set_1d_labeled_data(
&(0..62832).map(
|i| {
let x = i as f64 / 10000.0;
let y = x.sin();
(x.to_string(), Ratio::try_from(y).unwrap())
}
).collect::<Vec<_>>()
)
.set_y_max("1.2")
.set_y_min("-1.2")
.add_labeled_interval(0, 31415, "first pi")
.add_labeled_interval(31416, 62831, "second pi")
.add_labeled_interval(0, 62831, "two pi")
.add_labeled_interval(0, 3000, "small interval")
.add_labeled_interval(1200, 9000, "small interval2");
println!("{g10}");
let mut g11 = Graph::new(72, 24);
g11.set_1d_labeled_data(&vec![
("zero".to_string(), 0), ("zero".to_string(), 0), ("zero".to_string(), 0), ("zero".to_string(), 0),
("zero".to_string(), 0), ("zero".to_string(), 0), ("zero".to_string(), 0), ("zero".to_string(), 0),
("zero".to_string(), 0), ("zero".to_string(), 0), ("zero".to_string(), 0), ("zero".to_string(), 0),
("five".to_string(), 5), ("nine".to_string(), 9), ("four".to_string(), 4), ("ten".to_string(), 10),
("zero".to_string(), 0), ("zero".to_string(), 0), ("zero".to_string(), 0), ("zero".to_string(), 0),
])
.set_title("hello")
.set_skip_range(SkipValue::None)
.set_horizontal_break(12, 36);
println!("{g11}");
}
▌ ▐ ▛▀▀ ▜▌ ▜▌ ▌ ▐ ▜▌ ▐ ▐▌ ▟▌ ▞▀▚ ▞▀▚ ▟▌ ▞▀▚ ▞▀▚ ▟▌ ▞▀▚ ▞▀▚
▛▀▜ ▛▀▀ ▐▌ ▐▌ ▞▀▚ ▌▄▐ ▞▀▚ ▄▄ ▐▌ ▞▀▜ ▐▌ ▐▌ ▞ ▝▌ ▐▌ ▞ ▝▌ ▐▌ ▞ ▝▌
▌ ▐ ▙▄▄ ▐▙ ▐▙ ▚▄▞ ▛ ▜ ▚▄▞ ▌ ▐▙ ▚▄▟ ▗▖ ▟▙ ▗▙▄ ▚▄▞ ▟▙ ▗▙▄ ▚▄▞ ▟▙ ▗▙▄ ▚▄▞
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
1.2│
│
1│ ▄▄██████▄▄
│ ▆▆██████████▆▆
0.8│ ▆▆██████████████▆▆
│ ▄▄██████████████████▄▄
0.6│ ▂██████████████████████▂
│ ██████████████████████████
0.4│ ▄▄██████████████████████████▄▄
│ ██████████████████████████████
0.2│ ▆▆██████████████████████████████▆▆
│ ██████████████████████████████████▂
0│█████████████████████████████████████ █
│█████████████████████████████████████▄▄ ▄▄█
-0.2│███████████████████████████████████████ ███
│███████████████████████████████████████▆▆ ▆▆███
-0.4│█████████████████████████████████████████▂ ▂█████
│███████████████████████████████████████████ ███████
-0.6│███████████████████████████████████████████▆▆ ▆▆███████
│█████████████████████████████████████████████▄▄ ▄▄█████████
-0.8│███████████████████████████████████████████████▄▄ ▄▄███████████
│█████████████████████████████████████████████████▆▆▂▂▂▂▂▂▆▆█████████████
-1│████████████████████████████████████████████████████████████████████████
│████████████████████████████████████████████████████████████████████████
╰────────────────────────────────────────────────────────────────────────
0 0.3489 1.0471 1.7452 2.4433 3.1415 3.8396 4.5377 5.2359
0.1744 0.8725 1.5707 2.2688 2.9669 3.6651 4.3632 5.0613 5.7595
<─────────────first pi─────────────><────────────second pi─────────────>
<────────────────────────────────two pi────────────────────────────────>
<──>
<─sma...─>
hello
11.5│ ))
│ ((
10.5│ ))
│ (( ████
9.5│ )) ████
│ (( ████ ████
8.5│ )) ████ ████
│ (( ████ ████
7.5│ )) ████ ████
│ (( ████ ████
6.5│ )) ████ ████
│ (( ████ ████
5.5│ )) ████ ████
│ (( ███████ ████
4.5│ )) ███████ ████
│ (( ██████████████
3.5│ )) ██████████████
│ (( ██████████████
2.5│ )) ██████████████
│ (( ██████████████
1.5│ )) ██████████████
│ (( ██████████████
0.5│ )) ██████████████
│███████████((█████████████████████████████████████
╰───────────))─────────────────────────────────────
zero zer(( zero five four zero zero
zero ))ro zero nine ten zero
Dependencies
~1.6–2.1MB
~43K SLoC