module Graphics.Plotly.Simple where
import Graphics.Plotly.Base
import Lens.Micro
import Data.Text (Text)
import Data.Aeson
scatterPlot :: [(Double,Double)] -> Trace
scatterPlot xys = scatter & x ?~ map (toJSON .fst) xys
& y ?~ map (toJSON .snd) xys
& mode ?~ [Markers]
linePlot :: [(Double,Double)] -> Trace
linePlot xys = scatter & x ?~ map (toJSON .fst) xys
& y ?~ map (toJSON .snd) xys
& mode ?~ [Lines]
hbarChart :: [(Text, Double)] -> Trace
hbarChart tvs = bars & y ?~ map (toJSON . fst) tvs
& x ?~ map (toJSON .snd) tvs
& orientation ?~ Horizontal
fanPlot :: Double -> [(Double, (Double, Double))] -> Trace
fanPlot sdCount tmnsds =
let xs = map fst tmnsds ++ reverse (map fst tmnsds)
ys = map ((\(m,sd) -> m+sdCount*sd) . snd) tmnsds
++ reverse ( map ((\(m,sd) -> msdCount*sd) . snd) tmnsds)
in scatter & x ?~ map toJSON xs & y ?~ map toJSON ys & fill ?~ ToZeroY