Skip to content
A go package for generating online histograms and plotting them in the terminal and PDFs
Go
Branch: master
Clone or download
Latest commit 03b18e7 Sep 24, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples
.gitignore
LICENSE Added licence. Jul 4, 2019
README.md
bar.go
go.mod
go.sum
hist.go Fix. Sep 11, 2019
img.go + Sep 11, 2019
plot.go Un-exported utility function. Aug 29, 2019
util.go +Fixed function docs. Aug 29, 2019

README.md

thist - a go package for calculating online histograms with plotting to the terminal and images

Documentation Go Report Card

Check out the watch subcommands from the csvtk and seqkit tools to see the code in action.

Example

package main

import (
        "fmt"
        "github.com/bsipos/thist"
        "math/rand"
        "time"
)

// randStream return a channel filled with endless normal random values
func randStream() chan float64 {
        c := make(chan float64)
        go func() {
                for {
                        c <- rand.NormFloat64()
                }
        }()
        return c
}

func main() {
        // create new histogram
        h := thist.NewHist(nil, "Example histogram", "auto", -1, true)
        c := randStream()

        i := 0
        for {
                // add data point to hsitogram
                h.Update(<-c)
                if i%50 == 0 {
                        // draw histogram
                        fmt.Println(h.Draw())
                        time.Sleep(time.Second)
                }
                i++
        }
}

demo video

TODO

  • Add more details on online histogram generation.
  • Add separate object for online estimation of moments.
  • Maybe add tcell as a back-end?
You can’t perform that action at this time.