Skip to content
forked from fitzgen/histo

Histograms with a configurable number of buckets, and a terminal-friendly Display.

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

fgadaleta/histo_fp

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

histo_fp

Build Status histo on crates.io histo on docs.rs

Histograms with a configurable number of floating point buckets, and a terminal-friendly Display.

This crate provides a Histogram type that allows configuration of the number of buckets with size in floating point that will be used, regardless of the range of input samples. This is useful when displaying a Histogram (for example, when printing it to a terminal) but it sacrifices fancy tracking of precision and significant figures.

It uses O(n) memory.

extern crate histo_fp;
use histo_fp::Histogram;

// Create a histogram that will have 10 buckets.
let mut histogram = Histogram::with_buckets(10, None);

// Adds some samples to the histogram.
for sample in 0..100 {
    histogram.add(sample as f64);
    histogram.add((sample * sample) as f64);
}

// Iterate over buckets and do stuff with their range and count.
for bucket in histogram.buckets() {
    do_stuff(bucket.start(), bucket.end(), bucket.count());
}

// And you can also `Display` a histogram!
println!("{}", histogram);

// Prints:
//
// ```
// # Number of samples = 200
// # Min = 0
// # Max = 9801
// #
// # Mean = 1666.5000000000005
// # Standard deviation = 2641.2281518263426
// # Variance = 6976086.1499999985
// #
// # Each ∎ is a count of 2
// #
//    0 ..  980 [ 132 ]: ∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
//  980 .. 1960 [  13 ]: ∎∎∎∎∎∎
// 1960 .. 2940 [  10 ]: ∎∎∎∎∎
// 2940 .. 3920 [   8 ]: ∎∎∎∎
// 3920 .. 4900 [   7 ]: ∎∎∎
// 4900 .. 5880 [   7 ]: ∎∎∎
// 5880 .. 6860 [   6 ]: ∎∎∎
// 6860 .. 7840 [   6 ]: ∎∎∎
// 7840 .. 8820 [   5 ]: ∎∎
// 8820 .. 9800 [   6 ]: ∎∎∎
// ```

Install and Usage

To use the histo_fp crate in your Rust project, add it to your Cargo.toml file:

[dependencies]
histo_fp = "0.2.0"

The histo_fp crate also comes with the command line histo_fp tool:

$ cargo install histo_fp
$ tail samples.txt
1
2
3
4
5
1
2
3
4
5
$ histo < samples.txt
# Number of samples = 150
# Min = 1
# Max = 10
#
# Mean = 5.833333333333334
# Standard deviation = 1.9301698255737905
# Variance = 3.7255555555555566
#
# Each ∎ is a count of 1
#
 1 ..  2 [  3 ]: ∎∎∎
 2 ..  3 [  3 ]: ∎∎∎
 3 ..  4 [  3 ]: ∎∎∎
 4 ..  5 [ 31 ]: ∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
 5 ..  6 [ 28 ]: ∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
 6 ..  7 [ 29 ]: ∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
 7 ..  8 [ 29 ]: ∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
 8 ..  9 [  8 ]: ∎∎∎∎∎∎∎∎
 9 .. 10 [  8 ]: ∎∎∎∎∎∎∎∎
10 .. 11 [  8 ]: ∎∎∎∎∎∎∎∎

About

Histograms with a configurable number of buckets, and a terminal-friendly Display.

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 97.1%
  • Shell 2.9%