4 releases (breaking)

✓ Uses Rust 2018 edition

0.4.0 Mar 2, 2019
0.3.0 Mar 1, 2018
0.2.0 Mar 16, 2017
0.1.0 Mar 9, 2017

#5 in Visualization

Download history 78/week @ 2018-12-19 9/week @ 2018-12-26 10/week @ 2019-01-02 16/week @ 2019-01-09 12/week @ 2019-01-16 13/week @ 2019-01-23 8/week @ 2019-01-30 11/week @ 2019-02-06 12/week @ 2019-02-13 10/week @ 2019-02-20 38/week @ 2019-02-27 29/week @ 2019-03-06 10/week @ 2019-03-13 39/week @ 2019-03-20 22/week @ 2019-03-27

77 downloads per month
Used in 2 crates

MIT license

105KB
3K SLoC

plotlib

Build Status Crates.io MIT

plotlib is a generic data visualisation and plotting library for Rust. It is currently in the very early stages of development.

It can currently produce:

  • histograms
  • scatter plots
  • line graphs from data or from function definitions
  • box plots
  • bar charts

rendering them as either SVG or plain text.

The API is still very much in flux and is subject to change.

For example, code like:

use plotlib::scatter::Scatter;
use plotlib::scatter;
use plotlib::style::{Marker, Point};
use plotlib::view::View;
use plotlib::page::Page;

fn main() {
    // Scatter plots expect a list of pairs
    let data1 = [(-3.0, 2.3), (-1.6, 5.3), (0.3, 0.7), (4.3, -1.4), (6.4, 4.3), (8.5, 3.7)];

    // We create our scatter plot from the data
    let s1 = Scatter::from_slice(&data1)
        .style(scatter::Style::new()
            .marker(Marker::Square) // setting the marker to be a square
            .colour("#DD3355")); // and a custom colour

    // We can plot multiple data sets in the same view
    let data2 = [(-1.4, 2.5), (7.2, -0.3)];
    let s2 = Scatter::from_slice(&data2)
        .style(scatter::Style::new() // uses the default marker
            .colour("#35C788")); // and a different colour

    // The 'view' describes what set of data is drawn
    let v = View::new()
        .add(&s1)
        .add(&s2)
        .x_range(-5., 10.)
        .y_range(-2., 6.)
        .x_label("Some varying variable")
        .y_label("The response of something");

    // A page with a single view is then saved to an SVG file
    Page::single(&v).save("scatter.svg");
}

will produce output like:

scatter plot

Dependencies

~110KB