interactive-plot: Interactive quick time series plotting

[ bsd3, interactive, library, program ] [ Propose Tags ]

Quick time series terminal plotting for data exploration/in ghci. See documentation for Interactive.Plot and README for more information.


[Skip to Readme]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1.0.0
Change log CHANGELOG.md
Dependencies base (>=4.11 && <5), containers (>=0.5.11), data-default-class, interactive-plot, microlens, microlens-th, MonadRandom, mtl, transformers, vty [details]
License BSD-3-Clause
Copyright (c) Justin Le 2018
Author Justin Le
Maintainer justin@jle.im
Category Interactive
Home page https://github.com/mstksg/interactive-plot#readme
Bug tracker https://github.com/mstksg/interactive-plot/issues
Source repo head: git clone https://github.com/mstksg/interactive-plot
Uploaded by jle at 2019-09-09T21:31:16Z
Distributions
Executables interactive-plot-demo
Downloads 499 total (9 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2019-09-09 [all 1 reports]

Readme for interactive-plot-0.1.0.0

[back to package description]

interactive-plot

Quick time series terminal plotting for data exploration/in ghci.

Most commonly used imports should be available in Interactive.Plot.

Construct a Series from scratch using the raw data type, or use one of the handy helpers:

  1. listSeries: Create a series from a list or any foldable.
  2. tupleSeries: Create a series from a list of ordered-pair tuples providing x and y locations.
  3. funcSeries: Create a series from a function Double -> Double, given a range of xs to produce the ys.

Then simply "run" a list of series (or "automatic-styled series") using runPlotAuto or runPlot:

runPlotAuto
    :: PlotOpts         -- ^ options (can be 'defaultPlotOpts')
    -> Maybe String     -- ^ optional title
    -> [AutoSeries]     -- ^ uninitialized data of serieses
    -> IO ()

Static Plots

These plots can be zoomed, stretched, scaled, panned interactively after launch. If you quit, things resume back to the ghci session (or whatever point in the program you launch from).

There are also options for rudimentary animations:

animatePlot
    :: PlotOpts
    -> Double           -- ^ update rate (frames per second)
    -> Maybe String     -- ^ title
    -> [[Series]]       -- ^ list of series data (potentially infinite)
    -> IO ()

animatePlotFunc
    :: PlotOpts
    -> Maybe String                 -- ^ title
    -> (Double -> Maybe [Series])   -- ^ function from time to plot. will quit
                                    -- as soon as 'Nothing' is returned.
    -> IO ()

Animated Plots

Todo

  • Consider being able to use functions directly as a series, instead of converting them into ordered pairs based on a known x series.
  • I'm sure usability could always be improved :)