In [8]:
{-# LANGUAGE ImportQualifiedPost #-}
{-# LANGUAGE OverloadedStrings #-}

import WGL.IHaskell qualified as WGL
import Graphics.Plotly qualified as PT
import Data.Complex
import Control.Lens

iqToSig rate n carrierFreq iq =
    let i = take n [realPart iq * cos (2*pi*carrierFreq*t/rate) | t <- [0..]]
        q = take n [imagPart iq * sin (2*pi*carrierFreq*t/rate) | t <- [0..]]
    in (i, q, zipWith (+) i q)

simplePlotMulti=
    let mkLine = PT.line (PT.aes & PT.x .~ fst & PT.y .~ snd)
    in PT.plotly "simple" . map mkLine
simplerPlotMulti  = simplePlotMulti . map (zip [0..])

iqPlot1 = let (i,q,iq) = iqToSig 10e6 128 2e5 (0.707 :+ 0.707) in simplerPlotMulti [i,q,iq]

WGL.displayPlotly iqPlot1
In [ ]: