Sparklines for Rust's Embedded-graphics
Sparklines are small, high resolution graphics embedded in a context of words, numbers or images". Edward Tufte describes sparklines as "data-intense, design-simple, word-sized graphics".
Explore the docs »
Rust Crate · Report Bug · Request Feature
Table of Contents
About The Project
This library is a Rust implementation of ESParklines library which is extemely useful for creating real-time graphs for use with small embedded systems screeens.
This library is designed to be as simple as possible. It is responsible for:
- holding a buffer of pre-defined size of numeric data type
- renders sparklines using a passed-in function to draw lines
- is display-driver independent as you can provide any drawing function
- works with embedded-graphics simulator so you can quickly iterate on you dev machine
Built With
Getting Started
Make sure you have your rust
environment configurated
Installation
-
Add library to your
Cargo.toml
... [dependencies] embedded-graphics-sparklines = "0.1.0"
-
Use the library in you code
let mut display: SimulatorDisplay<BinaryColor> = SimulatorDisplay::new(Size::new(240, 135)); let bbox = Rectangle::new(Point::new(0, 26), Size::new(240, 90)); let draw_fn = |lastp, p| Line::new(lastp, p); // create sparkline object let mut sparkline = Sparkline::new( bbox, // position and size of the sparkline 32, // max samples to store in memory (and display on graph) BinaryColor::On, 1, // stroke size draw_fn, ); let output_settings = OutputSettingsBuilder::new() .theme(BinaryColorTheme::OledBlue) .build(); let mut window = Window::new("Sparkline", &output_settings); loop { let val = rand::thread_rng().gen_range(0..100); sparkline.add(val); sparkline.draw(&mut display)?; window.update(&display); thread::sleep( Duration::from_millis(100); }
-
Experiment and have fun!
😌 Seemain.rs
if you want to run a quick demo.
Quickstart
- Make sure you've got
cargo
set up - Install cargo binary crate to be able to test easily on your computer
$ cargo install embedded-graphics-sparklines
- Run the provided binary example with simulator display
$ embedded-graphics-sparklines --features build-binary
- You should see an output similar to the followig one
Roadmap
- add tests
- add rustdocs
- CI integration with GithHub Actions
- better error generation & handling
See the open issues for a full list of proposed features (and known issues).
License
Distributed under the MIT License. See LICENSE
for more information.
Contact
Bernard Kobos - @bkobos - [email protected]
Project Link: https://github.com/bernii/embedded-graphics-sparklines
Acknowledgments
- ESParklines project which this is based on