{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeApplications #-}
module Graphics.Plotly.GoG where
import Data.Aeson
import Data.Text (Text)
import Data.Time
import Lens.Micro
import qualified Graphics.Plotly.Base as Plot
class ToJSON a => AxisValue a
instance AxisValue Double
instance AxisValue Float
instance AxisValue Text
instance AxisValue String
instance AxisValue Int
instance AxisValue Day
instance AxisValue a => AxisValue [a]
data RGB a = RGB a a a
data RGBA a = RGBA a a a a
instance ToJSON (RGB Int) where
toJSON :: RGB Int -> Value
toJSON (RGB Int
r Int
g Int
b) = String -> Value
forall a. ToJSON a => a -> Value
toJSON (String -> Value) -> String -> Value
forall a b. (a -> b) -> a -> b
$ [String] -> String
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat [String
"rgb(",Int -> String
forall a. Show a => a -> String
show Int
r,String
",",Int -> String
forall a. Show a => a -> String
show Int
g, String
",", Int -> String
forall a. Show a => a -> String
show Int
b,String
")"]
instance ToJSON (RGB Double) where
toJSON :: RGB Double -> Value
toJSON (RGB Double
r Double
g Double
b) = String -> Value
forall a. ToJSON a => a -> Value
toJSON (String -> Value) -> String -> Value
forall a b. (a -> b) -> a -> b
$ [String] -> String
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat [String
"rgb(",Double -> String
showd Double
r,String
",",Double -> String
showd Double
g, String
",", Double -> String
showd Double
b,String
")"]
where showd :: Double -> String
showd = forall a. Show a => a -> String
show @Int(Int -> String) -> (Double -> Int) -> Double -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Double -> Int
forall a b. (RealFrac a, Integral b) => a -> b
floor (Double -> Int) -> (Double -> Double) -> Double -> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Double -> Double -> Double
forall a. Num a => a -> a -> a
*Double
256)
instance ToJSON (RGBA Int) where
toJSON :: RGBA Int -> Value
toJSON (RGBA Int
r Int
g Int
b Int
a) = String -> Value
forall a. ToJSON a => a -> Value
toJSON (String -> Value) -> String -> Value
forall a b. (a -> b) -> a -> b
$ [String] -> String
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat [String
"rgba(",Int -> String
forall a. Show a => a -> String
show Int
r,String
",",Int -> String
forall a. Show a => a -> String
show Int
g, String
",", Int -> String
forall a. Show a => a -> String
show Int
b,String
",", Int -> String
forall a. Show a => a -> String
show Int
a, String
")"]
instance ToJSON (RGBA Double) where
toJSON :: RGBA Double -> Value
toJSON (RGBA Double
r Double
g Double
b Double
a) = String -> Value
forall a. ToJSON a => a -> Value
toJSON (String -> Value) -> String -> Value
forall a b. (a -> b) -> a -> b
$ [String] -> String
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat [String
"rgb(",Double -> String
showd Double
r,String
",",Double -> String
showd Double
g, String
",", Double -> String
showd Double
b,String
",", Double -> String
showd Double
a,String
")"]
where showd :: Double -> String
showd = forall a. Show a => a -> String
show @Int(Int -> String) -> (Double -> Int) -> Double -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Double -> Int
forall a b. (RealFrac a, Integral b) => a -> b
floor (Double -> Int) -> (Double -> Double) -> Double -> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Double -> Double -> Double
forall a. Num a => a -> a -> a
*Double
256)
class ToJSON a => IsColor a
instance IsColor Int
instance IsColor (RGB Int)
instance IsColor (RGB Double)
instance IsColor (RGBA Int)
instance IsColor (RGBA Double)
type family XVal a
type family YVal a
type family ZVal a
type family CVal a
type family SVal a
type instance XVal (x,y,z,c,s) = x
type instance YVal (x,y,z,c,s) = y
type instance ZVal (x,y,z,c,s) = z
type instance CVal (x,y,z,c,s) = c
type instance SVal (x,y,z,c,s) = s
data Aes t a = Aes
{ forall t a. Aes t a -> a -> XVal t
_x :: a -> XVal t
, forall t a. Aes t a -> a -> YVal t
_y :: a -> YVal t
, forall t a. Aes t a -> a -> ZVal t
_z :: a -> ZVal t
, forall t a. Aes t a -> Maybe (a -> CVal t)
_color :: Maybe (a -> CVal t)
, forall t a. Aes t a -> Maybe (a -> SVal t)
_size :: Maybe (a -> SVal t)
}
aes :: Aes ((), (), (), (), ()) a
aes :: forall a. Aes ((), (), (), (), ()) a
aes = (a -> XVal ((), (), (), (), ()))
-> (a -> YVal ((), (), (), (), ()))
-> (a -> ZVal ((), (), (), (), ()))
-> Maybe (a -> CVal ((), (), (), (), ()))
-> Maybe (a -> SVal ((), (), (), (), ()))
-> Aes ((), (), (), (), ()) a
forall t a.
(a -> XVal t)
-> (a -> YVal t)
-> (a -> ZVal t)
-> Maybe (a -> CVal t)
-> Maybe (a -> SVal t)
-> Aes t a
Aes (() -> a -> ()
forall a b. a -> b -> a
const ()) (() -> a -> ()
forall a b. a -> b -> a
const ()) (() -> a -> ()
forall a b. a -> b -> a
const ()) Maybe (a -> CVal ((), (), (), (), ()))
forall a. Maybe a
Nothing Maybe (a -> SVal ((), (), (), (), ()))
forall a. Maybe a
Nothing
setx :: (AxisValue v)
=> Aes (vx,vy,vz,vc,vs) a -> (a -> v) -> Aes (v, vy, vz, vc, vs) a
setx :: forall v vx vy vz vc vs a.
AxisValue v =>
Aes (vx, vy, vz, vc, vs) a -> (a -> v) -> Aes (v, vy, vz, vc, vs) a
setx (Aes a -> XVal (vx, vy, vz, vc, vs)
_ a -> YVal (vx, vy, vz, vc, vs)
fy a -> ZVal (vx, vy, vz, vc, vs)
fz Maybe (a -> CVal (vx, vy, vz, vc, vs))
fc Maybe (a -> SVal (vx, vy, vz, vc, vs))
fs) a -> v
f = (a -> XVal (v, vy, vz, vc, vs))
-> (a -> YVal (v, vy, vz, vc, vs))
-> (a -> ZVal (v, vy, vz, vc, vs))
-> Maybe (a -> CVal (v, vy, vz, vc, vs))
-> Maybe (a -> SVal (v, vy, vz, vc, vs))
-> Aes (v, vy, vz, vc, vs) a
forall t a.
(a -> XVal t)
-> (a -> YVal t)
-> (a -> ZVal t)
-> Maybe (a -> CVal t)
-> Maybe (a -> SVal t)
-> Aes t a
Aes a -> v
a -> XVal (v, vy, vz, vc, vs)
f a -> YVal (v, vy, vz, vc, vs)
a -> YVal (vx, vy, vz, vc, vs)
fy a -> ZVal (v, vy, vz, vc, vs)
a -> ZVal (vx, vy, vz, vc, vs)
fz Maybe (a -> CVal (v, vy, vz, vc, vs))
Maybe (a -> CVal (vx, vy, vz, vc, vs))
fc Maybe (a -> SVal (v, vy, vz, vc, vs))
Maybe (a -> SVal (vx, vy, vz, vc, vs))
fs
x :: (AxisValue v)
=> Lens (Aes (vx,vy, vz, vc, vs) a) (Aes (v,vy, vz, vc, vs) a) (a -> vx) (a -> v)
x :: forall v vx vy vz vc vs a.
AxisValue v =>
Lens
(Aes (vx, vy, vz, vc, vs) a)
(Aes (v, vy, vz, vc, vs) a)
(a -> vx)
(a -> v)
x = (Aes (vx, vy, vz, vc, vs) a -> a -> vx)
-> (Aes (vx, vy, vz, vc, vs) a
-> (a -> v) -> Aes (v, vy, vz, vc, vs) a)
-> Lens
(Aes (vx, vy, vz, vc, vs) a)
(Aes (v, vy, vz, vc, vs) a)
(a -> vx)
(a -> v)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens Aes (vx, vy, vz, vc, vs) a -> a -> vx
forall t a. Aes t a -> a -> XVal t
_x Aes (vx, vy, vz, vc, vs) a -> (a -> v) -> Aes (v, vy, vz, vc, vs) a
forall v vx vy vz vc vs a.
AxisValue v =>
Aes (vx, vy, vz, vc, vs) a -> (a -> v) -> Aes (v, vy, vz, vc, vs) a
setx
sety :: (AxisValue v)
=> Aes (vx,vy, vz, vc, vs) a -> (a -> v) -> Aes (vx, v, vz, vc, vs) a
sety :: forall v vx vy vz vc vs a.
AxisValue v =>
Aes (vx, vy, vz, vc, vs) a -> (a -> v) -> Aes (vx, v, vz, vc, vs) a
sety (Aes a -> XVal (vx, vy, vz, vc, vs)
fx a -> YVal (vx, vy, vz, vc, vs)
_ a -> ZVal (vx, vy, vz, vc, vs)
fz Maybe (a -> CVal (vx, vy, vz, vc, vs))
fc Maybe (a -> SVal (vx, vy, vz, vc, vs))
fs) a -> v
f = (a -> XVal (vx, v, vz, vc, vs))
-> (a -> YVal (vx, v, vz, vc, vs))
-> (a -> ZVal (vx, v, vz, vc, vs))
-> Maybe (a -> CVal (vx, v, vz, vc, vs))
-> Maybe (a -> SVal (vx, v, vz, vc, vs))
-> Aes (vx, v, vz, vc, vs) a
forall t a.
(a -> XVal t)
-> (a -> YVal t)
-> (a -> ZVal t)
-> Maybe (a -> CVal t)
-> Maybe (a -> SVal t)
-> Aes t a
Aes a -> XVal (vx, v, vz, vc, vs)
a -> XVal (vx, vy, vz, vc, vs)
fx a -> v
a -> YVal (vx, v, vz, vc, vs)
f a -> ZVal (vx, v, vz, vc, vs)
a -> ZVal (vx, vy, vz, vc, vs)
fz Maybe (a -> CVal (vx, v, vz, vc, vs))
Maybe (a -> CVal (vx, vy, vz, vc, vs))
fc Maybe (a -> SVal (vx, v, vz, vc, vs))
Maybe (a -> SVal (vx, vy, vz, vc, vs))
fs
y :: (AxisValue v)
=> Lens (Aes (vx,vy, vz, vc, vs) a) (Aes (vx,v, vz, vc, vs) a) (a -> vy) (a -> v)
y :: forall v vx vy vz vc vs a.
AxisValue v =>
Lens
(Aes (vx, vy, vz, vc, vs) a)
(Aes (vx, v, vz, vc, vs) a)
(a -> vy)
(a -> v)
y = (Aes (vx, vy, vz, vc, vs) a -> a -> vy)
-> (Aes (vx, vy, vz, vc, vs) a
-> (a -> v) -> Aes (vx, v, vz, vc, vs) a)
-> Lens
(Aes (vx, vy, vz, vc, vs) a)
(Aes (vx, v, vz, vc, vs) a)
(a -> vy)
(a -> v)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens Aes (vx, vy, vz, vc, vs) a -> a -> vy
forall t a. Aes t a -> a -> YVal t
_y Aes (vx, vy, vz, vc, vs) a -> (a -> v) -> Aes (vx, v, vz, vc, vs) a
forall v vx vy vz vc vs a.
AxisValue v =>
Aes (vx, vy, vz, vc, vs) a -> (a -> v) -> Aes (vx, v, vz, vc, vs) a
sety
setz :: (AxisValue v)
=> Aes (vx,vy, vz, vc, vs) a -> (a -> v) -> Aes (vx, vy, v, vc, vs) a
setz :: forall v vx vy vz vc vs a.
AxisValue v =>
Aes (vx, vy, vz, vc, vs) a -> (a -> v) -> Aes (vx, vy, v, vc, vs) a
setz (Aes a -> XVal (vx, vy, vz, vc, vs)
fx a -> YVal (vx, vy, vz, vc, vs)
fy a -> ZVal (vx, vy, vz, vc, vs)
_ Maybe (a -> CVal (vx, vy, vz, vc, vs))
fc Maybe (a -> SVal (vx, vy, vz, vc, vs))
fs) a -> v
f = (a -> XVal (vx, vy, v, vc, vs))
-> (a -> YVal (vx, vy, v, vc, vs))
-> (a -> ZVal (vx, vy, v, vc, vs))
-> Maybe (a -> CVal (vx, vy, v, vc, vs))
-> Maybe (a -> SVal (vx, vy, v, vc, vs))
-> Aes (vx, vy, v, vc, vs) a
forall t a.
(a -> XVal t)
-> (a -> YVal t)
-> (a -> ZVal t)
-> Maybe (a -> CVal t)
-> Maybe (a -> SVal t)
-> Aes t a
Aes a -> XVal (vx, vy, v, vc, vs)
a -> XVal (vx, vy, vz, vc, vs)
fx a -> YVal (vx, vy, v, vc, vs)
a -> YVal (vx, vy, vz, vc, vs)
fy a -> v
a -> ZVal (vx, vy, v, vc, vs)
f Maybe (a -> CVal (vx, vy, v, vc, vs))
Maybe (a -> CVal (vx, vy, vz, vc, vs))
fc Maybe (a -> SVal (vx, vy, v, vc, vs))
Maybe (a -> SVal (vx, vy, vz, vc, vs))
fs
z :: (AxisValue v)
=> Lens (Aes (vx,vy, vz, vc, vs) a) (Aes (vx,vy, v, vc, vs) a) (a -> vz) (a -> v)
z :: forall v vx vy vz vc vs a.
AxisValue v =>
Lens
(Aes (vx, vy, vz, vc, vs) a)
(Aes (vx, vy, v, vc, vs) a)
(a -> vz)
(a -> v)
z = (Aes (vx, vy, vz, vc, vs) a -> a -> vz)
-> (Aes (vx, vy, vz, vc, vs) a
-> (a -> v) -> Aes (vx, vy, v, vc, vs) a)
-> Lens
(Aes (vx, vy, vz, vc, vs) a)
(Aes (vx, vy, v, vc, vs) a)
(a -> vz)
(a -> v)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens Aes (vx, vy, vz, vc, vs) a -> a -> vz
forall t a. Aes t a -> a -> ZVal t
_z Aes (vx, vy, vz, vc, vs) a -> (a -> v) -> Aes (vx, vy, v, vc, vs) a
forall v vx vy vz vc vs a.
AxisValue v =>
Aes (vx, vy, vz, vc, vs) a -> (a -> v) -> Aes (vx, vy, v, vc, vs) a
setz
setcol :: (IsColor v)
=> Aes (vx,vy, vz, vc, vs) a -> Maybe (a -> v) -> Aes (vx, vy, vz, v, vs) a
setcol :: forall v vx vy vz vc vs a.
IsColor v =>
Aes (vx, vy, vz, vc, vs) a
-> Maybe (a -> v) -> Aes (vx, vy, vz, v, vs) a
setcol (Aes a -> XVal (vx, vy, vz, vc, vs)
fx a -> YVal (vx, vy, vz, vc, vs)
fy a -> ZVal (vx, vy, vz, vc, vs)
fz Maybe (a -> CVal (vx, vy, vz, vc, vs))
_ Maybe (a -> SVal (vx, vy, vz, vc, vs))
fs) Maybe (a -> v)
f = (a -> XVal (vx, vy, vz, v, vs))
-> (a -> YVal (vx, vy, vz, v, vs))
-> (a -> ZVal (vx, vy, vz, v, vs))
-> Maybe (a -> CVal (vx, vy, vz, v, vs))
-> Maybe (a -> SVal (vx, vy, vz, v, vs))
-> Aes (vx, vy, vz, v, vs) a
forall t a.
(a -> XVal t)
-> (a -> YVal t)
-> (a -> ZVal t)
-> Maybe (a -> CVal t)
-> Maybe (a -> SVal t)
-> Aes t a
Aes a -> XVal (vx, vy, vz, v, vs)
a -> XVal (vx, vy, vz, vc, vs)
fx a -> YVal (vx, vy, vz, v, vs)
a -> YVal (vx, vy, vz, vc, vs)
fy a -> ZVal (vx, vy, vz, v, vs)
a -> ZVal (vx, vy, vz, vc, vs)
fz Maybe (a -> v)
Maybe (a -> CVal (vx, vy, vz, v, vs))
f Maybe (a -> SVal (vx, vy, vz, v, vs))
Maybe (a -> SVal (vx, vy, vz, vc, vs))
fs
color :: (IsColor v)
=> Lens (Aes (vx,vy, vz, vc, vs) a) (Aes (vx,vy,vz, v,vs) a) (Maybe (a -> vc)) (Maybe (a -> v))
color :: forall v vx vy vz vc vs a.
IsColor v =>
Lens
(Aes (vx, vy, vz, vc, vs) a)
(Aes (vx, vy, vz, v, vs) a)
(Maybe (a -> vc))
(Maybe (a -> v))
color = (Aes (vx, vy, vz, vc, vs) a -> Maybe (a -> vc))
-> (Aes (vx, vy, vz, vc, vs) a
-> Maybe (a -> v) -> Aes (vx, vy, vz, v, vs) a)
-> Lens
(Aes (vx, vy, vz, vc, vs) a)
(Aes (vx, vy, vz, v, vs) a)
(Maybe (a -> vc))
(Maybe (a -> v))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens Aes (vx, vy, vz, vc, vs) a -> Maybe (a -> vc)
forall t a. Aes t a -> Maybe (a -> CVal t)
_color Aes (vx, vy, vz, vc, vs) a
-> Maybe (a -> v) -> Aes (vx, vy, vz, v, vs) a
forall v vx vy vz vc vs a.
IsColor v =>
Aes (vx, vy, vz, vc, vs) a
-> Maybe (a -> v) -> Aes (vx, vy, vz, v, vs) a
setcol
setsize :: (AxisValue v, Num v)
=> Aes (vx,vy, vz, vc, vs) a -> Maybe (a -> v) -> Aes (vx, vy, vz, vc, v) a
setsize :: forall v vx vy vz vc vs a.
(AxisValue v, Num v) =>
Aes (vx, vy, vz, vc, vs) a
-> Maybe (a -> v) -> Aes (vx, vy, vz, vc, v) a
setsize (Aes a -> XVal (vx, vy, vz, vc, vs)
fx a -> YVal (vx, vy, vz, vc, vs)
fy a -> ZVal (vx, vy, vz, vc, vs)
fz Maybe (a -> CVal (vx, vy, vz, vc, vs))
fc Maybe (a -> SVal (vx, vy, vz, vc, vs))
_) = (a -> XVal (vx, vy, vz, vc, v))
-> (a -> YVal (vx, vy, vz, vc, v))
-> (a -> ZVal (vx, vy, vz, vc, v))
-> Maybe (a -> CVal (vx, vy, vz, vc, v))
-> Maybe (a -> SVal (vx, vy, vz, vc, v))
-> Aes (vx, vy, vz, vc, v) a
forall t a.
(a -> XVal t)
-> (a -> YVal t)
-> (a -> ZVal t)
-> Maybe (a -> CVal t)
-> Maybe (a -> SVal t)
-> Aes t a
Aes a -> XVal (vx, vy, vz, vc, v)
a -> XVal (vx, vy, vz, vc, vs)
fx a -> YVal (vx, vy, vz, vc, v)
a -> YVal (vx, vy, vz, vc, vs)
fy a -> ZVal (vx, vy, vz, vc, v)
a -> ZVal (vx, vy, vz, vc, vs)
fz Maybe (a -> CVal (vx, vy, vz, vc, v))
Maybe (a -> CVal (vx, vy, vz, vc, vs))
fc
size :: (AxisValue v, Num v)
=> Lens (Aes (vx,vy, vz, vc, vs) a) (Aes (vx,vy,vz, vc,v) a) (Maybe (a -> vs)) (Maybe (a -> v))
size :: forall v vx vy vz vc vs a.
(AxisValue v, Num v) =>
Lens
(Aes (vx, vy, vz, vc, vs) a)
(Aes (vx, vy, vz, vc, v) a)
(Maybe (a -> vs))
(Maybe (a -> v))
size = (Aes (vx, vy, vz, vc, vs) a -> Maybe (a -> vs))
-> (Aes (vx, vy, vz, vc, vs) a
-> Maybe (a -> v) -> Aes (vx, vy, vz, vc, v) a)
-> Lens
(Aes (vx, vy, vz, vc, vs) a)
(Aes (vx, vy, vz, vc, v) a)
(Maybe (a -> vs))
(Maybe (a -> v))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens Aes (vx, vy, vz, vc, vs) a -> Maybe (a -> vs)
forall t a. Aes t a -> Maybe (a -> SVal t)
_size Aes (vx, vy, vz, vc, vs) a
-> Maybe (a -> v) -> Aes (vx, vy, vz, vc, v) a
forall v vx vy vz vc vs a.
(AxisValue v, Num v) =>
Aes (vx, vy, vz, vc, vs) a
-> Maybe (a -> v) -> Aes (vx, vy, vz, vc, v) a
setsize
points :: (AxisValue (XVal t), AxisValue (YVal t), ToJSON (CVal t), ToJSON (SVal t))
=> Aes t a -> [a] -> Plot.Trace
points :: forall t a.
(AxisValue (XVal t), AxisValue (YVal t), ToJSON (CVal t),
ToJSON (SVal t)) =>
Aes t a -> [a] -> Trace
points Aes t a
a [a]
xs = Maybe (a -> SVal t) -> Trace -> Trace
setSize (Aes t a -> Maybe (a -> SVal t)
forall t a. Aes t a -> Maybe (a -> SVal t)
_size Aes t a
a) (Trace -> Trace) -> Trace -> Trace
forall a b. (a -> b) -> a -> b
$ Maybe (a -> CVal t) -> Trace -> Trace
setColors (Aes t a -> Maybe (a -> CVal t)
forall t a. Aes t a -> Maybe (a -> CVal t)
_color Aes t a
a) (Trace -> Trace) -> Trace -> Trace
forall a b. (a -> b) -> a -> b
$ Trace
Plot.scatter
Trace -> (Trace -> Trace) -> Trace
forall a b. a -> (a -> b) -> b
& (Maybe [Value] -> Identity (Maybe [Value]))
-> Trace -> Identity Trace
Lens' Trace (Maybe [Value])
Plot.x ((Maybe [Value] -> Identity (Maybe [Value]))
-> Trace -> Identity Trace)
-> [Value] -> Trace -> Trace
forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t
?~ (a -> Value) -> [a] -> [Value]
forall a b. (a -> b) -> [a] -> [b]
map (XVal t -> Value
forall a. ToJSON a => a -> Value
toJSON (XVal t -> Value) -> (a -> XVal t) -> a -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Aes t a -> a -> XVal t
forall t a. Aes t a -> a -> XVal t
_x Aes t a
a) [a]
xs
Trace -> (Trace -> Trace) -> Trace
forall a b. a -> (a -> b) -> b
& (Maybe [Value] -> Identity (Maybe [Value]))
-> Trace -> Identity Trace
Lens' Trace (Maybe [Value])
Plot.y ((Maybe [Value] -> Identity (Maybe [Value]))
-> Trace -> Identity Trace)
-> [Value] -> Trace -> Trace
forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t
?~ (a -> Value) -> [a] -> [Value]
forall a b. (a -> b) -> [a] -> [b]
map (YVal t -> Value
forall a. ToJSON a => a -> Value
toJSON (YVal t -> Value) -> (a -> YVal t) -> a -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Aes t a -> a -> YVal t
forall t a. Aes t a -> a -> YVal t
_y Aes t a
a) [a]
xs
Trace -> (Trace -> Trace) -> Trace
forall a b. a -> (a -> b) -> b
& (Maybe [Mode] -> Identity (Maybe [Mode]))
-> Trace -> Identity Trace
Lens' Trace (Maybe [Mode])
Plot.mode ((Maybe [Mode] -> Identity (Maybe [Mode]))
-> Trace -> Identity Trace)
-> [Mode] -> Trace -> Trace
forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t
?~ [Mode
Plot.Markers]
where setColors :: Maybe (a -> CVal t) -> Trace -> Trace
setColors Maybe (a -> CVal t)
Nothing Trace
p = Trace
p
setColors (Just a -> CVal t
setC) Trace
p
= Trace
p Trace -> (Trace -> Trace) -> Trace
forall a b. a -> (a -> b) -> b
& (Maybe Marker -> Identity (Maybe Marker))
-> Trace -> Identity Trace
Lens' Trace (Maybe Marker)
Plot.marker ((Maybe Marker -> Identity (Maybe Marker))
-> Trace -> Identity Trace)
-> ((Maybe (ListOrElem Value)
-> Identity (Maybe (ListOrElem Value)))
-> Maybe Marker -> Identity (Maybe Marker))
-> (Maybe (ListOrElem Value)
-> Identity (Maybe (ListOrElem Value)))
-> Trace
-> Identity Trace
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Marker -> Lens' (Maybe Marker) Marker
forall a. Eq a => a -> Lens' (Maybe a) a
non Marker
Plot.defMarker ((Marker -> Identity Marker)
-> Maybe Marker -> Identity (Maybe Marker))
-> ((Maybe (ListOrElem Value)
-> Identity (Maybe (ListOrElem Value)))
-> Marker -> Identity Marker)
-> (Maybe (ListOrElem Value)
-> Identity (Maybe (ListOrElem Value)))
-> Maybe Marker
-> Identity (Maybe Marker)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Maybe (ListOrElem Value) -> Identity (Maybe (ListOrElem Value)))
-> Marker -> Identity Marker
Lens' Marker (Maybe (ListOrElem Value))
Plot.markercolor ((Maybe (ListOrElem Value) -> Identity (Maybe (ListOrElem Value)))
-> Trace -> Identity Trace)
-> ListOrElem Value -> Trace -> Trace
forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t
?~ [Value] -> ListOrElem Value
forall a. [a] -> ListOrElem a
Plot.List ((a -> Value) -> [a] -> [Value]
forall a b. (a -> b) -> [a] -> [b]
map (CVal t -> Value
forall a. ToJSON a => a -> Value
toJSON (CVal t -> Value) -> (a -> CVal t) -> a -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> CVal t
setC) [a]
xs)
setSize :: Maybe (a -> SVal t) -> Trace -> Trace
setSize Maybe (a -> SVal t)
Nothing Trace
p = Trace
p
setSize (Just a -> SVal t
setS) Trace
p
= Trace
p Trace -> (Trace -> Trace) -> Trace
forall a b. a -> (a -> b) -> b
& (Maybe Marker -> Identity (Maybe Marker))
-> Trace -> Identity Trace
Lens' Trace (Maybe Marker)
Plot.marker ((Maybe Marker -> Identity (Maybe Marker))
-> Trace -> Identity Trace)
-> ((Maybe (ListOrElem Value)
-> Identity (Maybe (ListOrElem Value)))
-> Maybe Marker -> Identity (Maybe Marker))
-> (Maybe (ListOrElem Value)
-> Identity (Maybe (ListOrElem Value)))
-> Trace
-> Identity Trace
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Marker -> Lens' (Maybe Marker) Marker
forall a. Eq a => a -> Lens' (Maybe a) a
non Marker
Plot.defMarker ((Marker -> Identity Marker)
-> Maybe Marker -> Identity (Maybe Marker))
-> ((Maybe (ListOrElem Value)
-> Identity (Maybe (ListOrElem Value)))
-> Marker -> Identity Marker)
-> (Maybe (ListOrElem Value)
-> Identity (Maybe (ListOrElem Value)))
-> Maybe Marker
-> Identity (Maybe Marker)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Maybe (ListOrElem Value) -> Identity (Maybe (ListOrElem Value)))
-> Marker -> Identity Marker
Lens' Marker (Maybe (ListOrElem Value))
Plot.size ((Maybe (ListOrElem Value) -> Identity (Maybe (ListOrElem Value)))
-> Trace -> Identity Trace)
-> ListOrElem Value -> Trace -> Trace
forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t
?~ [Value] -> ListOrElem Value
forall a. [a] -> ListOrElem a
Plot.List ((a -> Value) -> [a] -> [Value]
forall a b. (a -> b) -> [a] -> [b]
map (SVal t -> Value
forall a. ToJSON a => a -> Value
toJSON (SVal t -> Value) -> (a -> SVal t) -> a -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> SVal t
setS) [a]
xs)
line :: (AxisValue (XVal t), AxisValue (YVal t))
=> Aes t a -> [a] -> Plot.Trace
line :: forall t a.
(AxisValue (XVal t), AxisValue (YVal t)) =>
Aes t a -> [a] -> Trace
line Aes t a
a [a]
xs = Trace
Plot.scatter Trace -> (Trace -> Trace) -> Trace
forall a b. a -> (a -> b) -> b
& (Maybe [Value] -> Identity (Maybe [Value]))
-> Trace -> Identity Trace
Lens' Trace (Maybe [Value])
Plot.x ((Maybe [Value] -> Identity (Maybe [Value]))
-> Trace -> Identity Trace)
-> [Value] -> Trace -> Trace
forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t
?~ (a -> Value) -> [a] -> [Value]
forall a b. (a -> b) -> [a] -> [b]
map (XVal t -> Value
forall a. ToJSON a => a -> Value
toJSON (XVal t -> Value) -> (a -> XVal t) -> a -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Aes t a -> a -> XVal t
forall t a. Aes t a -> a -> XVal t
_x Aes t a
a) [a]
xs
Trace -> (Trace -> Trace) -> Trace
forall a b. a -> (a -> b) -> b
& (Maybe [Value] -> Identity (Maybe [Value]))
-> Trace -> Identity Trace
Lens' Trace (Maybe [Value])
Plot.y ((Maybe [Value] -> Identity (Maybe [Value]))
-> Trace -> Identity Trace)
-> [Value] -> Trace -> Trace
forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t
?~ (a -> Value) -> [a] -> [Value]
forall a b. (a -> b) -> [a] -> [b]
map (YVal t -> Value
forall a. ToJSON a => a -> Value
toJSON (YVal t -> Value) -> (a -> YVal t) -> a -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Aes t a -> a -> YVal t
forall t a. Aes t a -> a -> YVal t
_y Aes t a
a) [a]
xs
Trace -> (Trace -> Trace) -> Trace
forall a b. a -> (a -> b) -> b
& (Maybe [Mode] -> Identity (Maybe [Mode]))
-> Trace -> Identity Trace
Lens' Trace (Maybe [Mode])
Plot.mode ((Maybe [Mode] -> Identity (Maybe [Mode]))
-> Trace -> Identity Trace)
-> [Mode] -> Trace -> Trace
forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t
?~ [Mode
Plot.Lines]
hbox :: (AxisValue (XVal t), Num (XVal t))
=> Aes t a
-> [a]
-> Plot.Trace
hbox :: forall t a.
(AxisValue (XVal t), Num (XVal t)) =>
Aes t a -> [a] -> Trace
hbox Aes t a
a [a]
xs = Trace
Plot.box
Trace -> (Trace -> Trace) -> Trace
forall a b. a -> (a -> b) -> b
& (Maybe [Value] -> Identity (Maybe [Value]))
-> Trace -> Identity Trace
Lens' Trace (Maybe [Value])
Plot.x ((Maybe [Value] -> Identity (Maybe [Value]))
-> Trace -> Identity Trace)
-> [Value] -> Trace -> Trace
forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t
?~ (a -> Value) -> [a] -> [Value]
forall a b. (a -> b) -> [a] -> [b]
map (XVal t -> Value
forall a. ToJSON a => a -> Value
toJSON (XVal t -> Value) -> (a -> XVal t) -> a -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Aes t a -> a -> XVal t
forall t a. Aes t a -> a -> XVal t
_x Aes t a
a) [a]
xs
Trace -> (Trace -> Trace) -> Trace
forall a b. a -> (a -> b) -> b
& (Maybe [Mode] -> Identity (Maybe [Mode]))
-> Trace -> Identity Trace
Lens' Trace (Maybe [Mode])
Plot.mode ((Maybe [Mode] -> Identity (Maybe [Mode]))
-> Trace -> Identity Trace)
-> [Mode] -> Trace -> Trace
forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t
?~ [Mode
Plot.Lines]
vbox :: (AxisValue (YVal t), Num (YVal t))
=> Aes t a
-> [a]
-> Plot.Trace
vbox :: forall t a.
(AxisValue (YVal t), Num (YVal t)) =>
Aes t a -> [a] -> Trace
vbox Aes t a
a [a]
ys = Trace
Plot.box
Trace -> (Trace -> Trace) -> Trace
forall a b. a -> (a -> b) -> b
& (Maybe [Value] -> Identity (Maybe [Value]))
-> Trace -> Identity Trace
Lens' Trace (Maybe [Value])
Plot.y ((Maybe [Value] -> Identity (Maybe [Value]))
-> Trace -> Identity Trace)
-> [Value] -> Trace -> Trace
forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t
?~ (a -> Value) -> [a] -> [Value]
forall a b. (a -> b) -> [a] -> [b]
map (YVal t -> Value
forall a. ToJSON a => a -> Value
toJSON (YVal t -> Value) -> (a -> YVal t) -> a -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Aes t a -> a -> YVal t
forall t a. Aes t a -> a -> YVal t
_y Aes t a
a) [a]
ys
Trace -> (Trace -> Trace) -> Trace
forall a b. a -> (a -> b) -> b
& (Maybe [Mode] -> Identity (Maybe [Mode]))
-> Trace -> Identity Trace
Lens' Trace (Maybe [Mode])
Plot.mode ((Maybe [Mode] -> Identity (Maybe [Mode]))
-> Trace -> Identity Trace)
-> [Mode] -> Trace -> Trace
forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t
?~ [Mode
Plot.Lines]
hbars :: (AxisValue (XVal t), AxisValue (YVal t))
=> Aes t a -> [a] -> Plot.Trace
hbars :: forall t a.
(AxisValue (XVal t), AxisValue (YVal t)) =>
Aes t a -> [a] -> Trace
hbars Aes t a
a [a]
xs = Trace
Plot.bars Trace -> (Trace -> Trace) -> Trace
forall a b. a -> (a -> b) -> b
& (Maybe [Value] -> Identity (Maybe [Value]))
-> Trace -> Identity Trace
Lens' Trace (Maybe [Value])
Plot.x ((Maybe [Value] -> Identity (Maybe [Value]))
-> Trace -> Identity Trace)
-> [Value] -> Trace -> Trace
forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t
?~ (a -> Value) -> [a] -> [Value]
forall a b. (a -> b) -> [a] -> [b]
map (XVal t -> Value
forall a. ToJSON a => a -> Value
toJSON (XVal t -> Value) -> (a -> XVal t) -> a -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Aes t a -> a -> XVal t
forall t a. Aes t a -> a -> XVal t
_x Aes t a
a) [a]
xs
Trace -> (Trace -> Trace) -> Trace
forall a b. a -> (a -> b) -> b
& (Maybe [Value] -> Identity (Maybe [Value]))
-> Trace -> Identity Trace
Lens' Trace (Maybe [Value])
Plot.y ((Maybe [Value] -> Identity (Maybe [Value]))
-> Trace -> Identity Trace)
-> [Value] -> Trace -> Trace
forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t
?~ (a -> Value) -> [a] -> [Value]
forall a b. (a -> b) -> [a] -> [b]
map (YVal t -> Value
forall a. ToJSON a => a -> Value
toJSON (YVal t -> Value) -> (a -> YVal t) -> a -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Aes t a -> a -> YVal t
forall t a. Aes t a -> a -> YVal t
_y Aes t a
a) [a]
xs
Trace -> (Trace -> Trace) -> Trace
forall a b. a -> (a -> b) -> b
& (Maybe Orientation -> Identity (Maybe Orientation))
-> Trace -> Identity Trace
Lens' Trace (Maybe Orientation)
Plot.orientation ((Maybe Orientation -> Identity (Maybe Orientation))
-> Trace -> Identity Trace)
-> Orientation -> Trace -> Trace
forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t
?~ Orientation
Plot.Horizontal
hcontour :: (AxisValue (XVal t), AxisValue (YVal t), AxisValue (ZVal t))
=> Aes t a -> [a] -> Plot.Trace
hcontour :: forall t a.
(AxisValue (XVal t), AxisValue (YVal t), AxisValue (ZVal t)) =>
Aes t a -> [a] -> Trace
hcontour Aes t a
a [a]
xs = Trace
Plot.contour
Trace -> (Trace -> Trace) -> Trace
forall a b. a -> (a -> b) -> b
& (Maybe [Value] -> Identity (Maybe [Value]))
-> Trace -> Identity Trace
Lens' Trace (Maybe [Value])
Plot.x ((Maybe [Value] -> Identity (Maybe [Value]))
-> Trace -> Identity Trace)
-> [Value] -> Trace -> Trace
forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t
?~ (a -> Value) -> [a] -> [Value]
forall a b. (a -> b) -> [a] -> [b]
map (XVal t -> Value
forall a. ToJSON a => a -> Value
toJSON (XVal t -> Value) -> (a -> XVal t) -> a -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Aes t a -> a -> XVal t
forall t a. Aes t a -> a -> XVal t
_x Aes t a
a) [a]
xs
Trace -> (Trace -> Trace) -> Trace
forall a b. a -> (a -> b) -> b
& (Maybe [Value] -> Identity (Maybe [Value]))
-> Trace -> Identity Trace
Lens' Trace (Maybe [Value])
Plot.y ((Maybe [Value] -> Identity (Maybe [Value]))
-> Trace -> Identity Trace)
-> [Value] -> Trace -> Trace
forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t
?~ (a -> Value) -> [a] -> [Value]
forall a b. (a -> b) -> [a] -> [b]
map (YVal t -> Value
forall a. ToJSON a => a -> Value
toJSON (YVal t -> Value) -> (a -> YVal t) -> a -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Aes t a -> a -> YVal t
forall t a. Aes t a -> a -> YVal t
_y Aes t a
a) [a]
xs
Trace -> (Trace -> Trace) -> Trace
forall a b. a -> (a -> b) -> b
& (Maybe [Value] -> Identity (Maybe [Value]))
-> Trace -> Identity Trace
Lens' Trace (Maybe [Value])
Plot.z ((Maybe [Value] -> Identity (Maybe [Value]))
-> Trace -> Identity Trace)
-> [Value] -> Trace -> Trace
forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t
?~ (a -> Value) -> [a] -> [Value]
forall a b. (a -> b) -> [a] -> [b]
map (ZVal t -> Value
forall a. ToJSON a => a -> Value
toJSON (ZVal t -> Value) -> (a -> ZVal t) -> a -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Aes t a -> a -> ZVal t
forall t a. Aes t a -> a -> ZVal t
_z Aes t a
a) [a]
xs
Trace -> (Trace -> Trace) -> Trace
forall a b. a -> (a -> b) -> b
& (Maybe Orientation -> Identity (Maybe Orientation))
-> Trace -> Identity Trace
Lens' Trace (Maybe Orientation)
Plot.orientation ((Maybe Orientation -> Identity (Maybe Orientation))
-> Trace -> Identity Trace)
-> Orientation -> Trace -> Trace
forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t
?~ Orientation
Plot.Horizontal