{-# language FlexibleContexts #-}
module Graphics.Rendering.Plot.Light.PlotTypes.Histogram where
import Graphics.Rendering.Plot.Light.Internal
import Control.Monad (forM_)
import qualified Data.Colour as C
import qualified Data.Colour.Names as C
import qualified Data.Histogram as H (Histogram(..), Bin(..), bins, asList)
import qualified Data.Histogram.Bin as H (BinD(..), binD, BinI(..), binI, binSize, UniformBin(..))
import qualified Data.Histogram.Fill as H (mkSimple, mkWeighted, fillBuilder, HBuilder(..))
import qualified Data.Vector as V
import qualified Data.Vector.Unboxed as VU
import qualified Data.Vector.Generic as VG
histogram col h = undefined where
(binCenters, binCounts) = unzip $ H.asList h
binXOffset = - head binCenters + 0.5 * binSize
binSize = H.binSize $ H.bins h
histo :: (Foldable v, VU.Unbox a, Num a) =>
Int
-> v Double
-> H.Histogram H.BinD a
histo n v = histo'' bins v where
mi = minimum v
ma = maximum v + 1
bins = H.binD mi n ma
histo'' :: (Foldable f, H.Bin bin, VU.Unbox val, Num val) =>
bin
-> f (H.BinValue bin)
-> H.Histogram bin val
histo'' bins v = H.fillBuilder buildr v
where
buildr = H.mkSimple bins