packages feed

Chart-tests-1.9.3: tests/Test1.hs

module Test1 where 

import Graphics.Rendering.Chart
import Data.Colour
import Data.Colour.Names
import Data.Colour.SRGB
import Control.Lens
import Data.Default.Class

import Utils

chart :: Double -> Renderable (LayoutPick Double Double Double)
chart lwidth = layoutToRenderable (layout lwidth)

layout :: Double -> Layout Double Double
layout lwidth = layout'
  where
    layout' = layout_title .~ "Amplitude Modulation"
            $ layout_plots .~ [ toPlot sinusoid1
                              , toPlot sinusoid2 ]
            $ layout_plot_background .~ Just (solidFillStyle $ opaque white)
            $ def

    am x = (sin (x*pi/45) + 1) / 2 * (sin (x*pi/5))

    sinusoid1 = plot_lines_values .~ [[ (x,(am x)) | x <- [0,(0.5)..400]]]
              $ plot_lines_style  .~ solidLine lwidth (opaque blue)
              $ plot_lines_title .~"am"
              $ def

    sinusoid2 = plot_points_style .~ filledCircles 2 (opaque red)
              $ plot_points_values .~ [ (x,(am x)) | x <- [0,7..400]]
              $ plot_points_title .~"am points"
              $ def

-- main = main' "test1" (chart 0.25)