Я пытаюсь посчитать буквы в сообщении и экспортировать их в изображение.
Я успешно создал BTreeMap
с буквами и посчитал их. У меня проблемы с экспортом в SVG с помощью plotlib. Я открыт для использования других библиотек, но я чувствую, что моя проблема в том, чтобы использовать библиотеку больше, чем сама библиотека.
Вот мой код для счетчика
Cargo.toml
[dependencies]
plotlib = "0.4.0"
main.rs
use std::collections::btree_map::BTreeMap;
use plotlib::style::BarChart;
fn main() {
let message: &str = "This is a long message";
let mut count = BTreeMap::new();
for c in message.trim().to_lowercase().chars() {
if c.is_alphabetic() {
*count.entry(c).or_insert(0) += 1
}
}
println!("Number of occurences per character");
for (ch, count) in &count {
println!("{:?}: {}", ch, count);
let count = *count as f64;
plotlib::barchart::BarChart::new(count).label(ch.to_string());
}
let v = plotlib::view::CategoricalView::new();
plotlib::page::Page::single(&v)
.save("barchart.svg")
.expect("saving svg");
}
Я ожидал, что эта программа выдаст SVG с данными в нем, но вызовет основную панику
Number of occurences per character
'a': 2
'e': 2
'g': 2
'h': 1
'i': 2
'l': 1
'm': 1
'n': 1
'o': 1
's': 4
't': 1
thread 'main' panicked at 'saving svg: ErrorMessage { msg: "invalid y_range: Range { lower: inf, upper: -inf }" }', src/libcore/result.rs:997:5
note: Run with `RUST_BACKTRACE=1` environment variable to display a backtrace.