úÎtlÁF      !"#$%&'()*+,-./0123456789:;<=>?@ABCDE Safe 9:;<=DR-Numerical equality %Comparison within numerical precision.The class of invertible linear transformations!Inverse matrix action on a vector9Diagonal matrices in R2 behave as scaling transformationsEMultiplicative matrix semigroup ("multiplying" two matrices together)Matrix product3Linear maps, i.e. linear transformations of vectors 5Matrix action, i.e. linear transformation of a vector HA Mat2 can be seen as a linear operator that acts on points in the plane Hermitian space : inner product Inner product2Vector space : multiplication by a scalar quantityScalar multiplicationAdditive group : v ^+^ zero == zero ^+^ v == v v ^-^ v == zeroIdentity elementGroup action ("sum")$Inverse group action ("subtraction")V2 is a vector in R^2(A frame, i.e. a bounding box for objectsA ¥ carries a "label" (i.e. any additional information such as a text tag, or any other data structure), in addition to position information. Data points on a plot are s.#A # defines a point in R2FBOverwrite either coordinate of a Point, to e.g. project on an axisGFrame corner coordinatesHFrame corner coordinatesIFrame corner coordinatesJFrame corner coordinatesKThe K is the extent in the x direction and L is the extent in the y directionLThe K is the extent in the x direction and L is the extent in the y direction'Euclidean (L^2) norm((Normalize a V2 w.r.t. its Euclidean norm) Create a V2 v$ from two endpoints p1, p2. That is v can be seen as pointing from p1 to p2M Create a V2 v$ from two endpoints p1, p2. That is v can be seen as pointing from p1 to p2*$The origin of the axes, point (0, 0)+Create a diagonal matrix,Build a V2 from a #; p (i.e. assuming the V2 points from the origin (0,0) to p)-Move a point along a vector.Move a  along a vector/The vector translation from a # contained in a  onto the unit squareNB: we do not check that pV is actually contained within the frame. This has to be supplied correctly by the user0The vector translation from a # p% contained in the unit square onto a NB: we do not check that pV is actually contained in [0,1] x [0,1], This has to be supplied correctly by the user1X-aligned unit vector2Y-aligned unit vectorN(Diagonal matrices can always be invertedOVectors form an additive groupP,Vectors form a monoid w.r.t. vector additionSQRSTU  !"#$%&VFWXYGHIJKLZ'()M*+,-./012[\]^N_`abcdOPeEQRSTU  !"#$%&VFWXYGHIJKLZ'()M*+,-./0126QRSTU    !"#$%&VFWXYGHIJKLZ'()M*+,-./012[\]^N_`abcdOPeNone 34Specify the type of connection between line segments8ESpecify at which end should the text be anchored to its current point<%Specify a continuous or dashed stroke?Create the SVG header from a @?A rectangle, defined by its center coordinates and side lengths À> putStrLn $ renderSvg $ rectCentered (Point 20 30) 15 30 (Just C.blue) (Just C.red) <g transform="translate(12.5 15.0)"><rect width="15.0" height="30.0" fill="#ff0000" stroke="#0000ff" /></g>ALine segment between two #s ¢> putStrLn $ renderSvg $ line (Point 0 0) (Point 1 1) 0.1 Continuous C.blueviolet <line x1="0.0" y1="0.0" x2="1.0" y2="1.0" stroke="#8a2be2" stroke-width="0.1" /> Ç> putStrLn $ renderSvg (line (Point 0 0) (Point 1 1) 0.1 (Dashed [0.2, 0.3]) C.blueviolet) <line x1="0.0" y1="0.0" x2="1.0" y2="1.0" stroke="#8a2be2" stroke-width="0.1" stroke-dasharray="0.2, 0.3" />foAn array of axis-aligned identical segments (to be used as axis tickmarks), with centers given by the array of #sBAn axis with tickmarks ÿ¾> putStrLn $ renderSvg $ axis X 200 2 C.red 0.05 (Point 150 10) Continuous [Point 50 1, Point 60 1, Point 70 1] <line x1="50.0" y1="10.0" x2="250.0" y2="10.0" stroke="#ff0000" stroke-width="2.0" /><line x1="50.0" y1="5.0" x2="50.0" y2="15.0" stroke="#ff0000" stroke-width="2.0" /><line x1="60.0" y1="5.0" x2="60.0" y2="15.0" stroke="#ff0000" stroke-width="2.0" /><line x1="70.0" y1="5.0" x2="70.0" y2="15.0" stroke="#ff0000" stroke-width="2.0" />CC! renders text onto the SVG canvas ConventionsThe # argument p refers to the  lower-left corner of the text box.;After the text is rendered, its text box can be rotated by rot degrees around p and then optionally anchored."The user can supply an additional $ displacement which will be applied afterA rotation and anchoring and refers to the rotated text box frame. Ç> putStrLn $ renderSvg $ text (-45) C.green TAEnd "blah" (V2 (- 10) 0) (Point 250 0) <text x="-10.0" y="0.0" transform="translate(250.0 0.0)rotate(-45.0)" fill="#008000" text-anchor="end">blah</text>DA circle “> putStrLn $ renderSvg $ circle (Point 20 30) 15 (Just C.blue) (Just C.red) <circle cx="20.0" cy="30.0" r="15.0" fill="#ff0000" stroke="#0000ff" />E"Polyline (piecewise straight line) ÿ > putStrLn $ renderSvg (polyline [Point 100 50, Point 120 20, Point 230 50] 4 (Dashed [3, 5]) Round C.blueviolet) <polyline points="100.0,50.0 120.0,20.0 230.0,50.0" fill="none" stroke="#8a2be2" stroke-width="4.0" stroke-linejoin="round" stroke-dasharray="3.0, 5.0" />gRender a Colour from colour into a blaze AttributehFor use e.g. in viewbox%3456789:;<=>?@Center coordinates WidthHeight Stroke colour Fill colour A First point Second point Stroke width Stroke type Stroke colourijkLength Stroke width Stroke colourCenter coordinateslLength Stroke width Stroke colourCenter coordinatesfAxis Length  Stroke width Stroke colourCenter coordinatesBAxis (i.e. either  or )Length Stroke width Stroke colour(Tick length fraction (w.r.t axis length)Axis center coordinateTick center coordinatesCRotation angle of the frame  Font colourText !Displacement w.r.t. rotated frame&Reference frame origin of the text boxmDCenterRadius Stroke colour Fill colourEData Stroke width Stroke colournopqgrshtuvwI  !"#$%&'()*+,-./0123456789:;<=>?@AjfBCDEq3456789:;<=>?@AijklfBCmDEnopqgrshtuvwNoneNoneNoneMarco Zocca 2017BSD3Marco Zocca <zocca marco gmail>NoneF  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF@DABCE<=>3456789:;?#$%& !" +*12'(),-.0/  SafexA point in a time seriesy/An instant, defined by date (Day) and TimeOfDay xz{|y}~€‚ƒ xz{|y}~€‚ƒxz{|y}~€‚ƒNone„%Parse a row of numbers, separated by sep…&parse a grid of numbers, separated by sep†‡„ˆ…‰Š‹†‡„ˆ…‰Š‹†‡„ˆ…‰Š‹ NoneŒACreate a Tick from valid (year, month, day, hour, minute, second)Map a Tick onto the rationalsŒŽŒŽŒŽ     !"##$%&&'())*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€~‚‚ƒ„…†‡ˆ‰Š‹ŒŽ ‘ ’“)plot-light-0.1.0.7-H2n1c07Tvfu3Jt4NNicE8fGraphics.Rendering.Plot.Light/Graphics.Rendering.Plot.Light.Internal.Geometry&Graphics.Rendering.Plot.Light.Internal/Graphics.Rendering.Plot.Light.PlotTypes.Heatmap/Graphics.Rendering.Plot.Light.PlotTypes.Scatter>Graphics.Rendering.Plot.Light.PlotTypes.TimeSeries.CandlestickData.TimeSeries.Forex%Graphics.Rendering.Plot.Light.IO.Text2Graphics.Rendering.Plot.Light.PlotTypes.TimeSeriesEps~= MatrixGroup<\>DiagMat2DMat2MultiplicativeSemigroup## LinearMap#>Mat2 Hermitian InnerProduct<.> VectorSpaceScalar.* AdditiveGroupzero^+^^-^V2AxisXYFrame_fpmin_fpmax LabeledPoint_lp_lplabelPoint_px_pynorm2 normalize2v2fromEndpointsorigindiagMat2 v2fromPoint movePointmoveLabeledPointV2 toUnitSquarefromUnitSquaree1e2StrokeLineJoin_MiterRoundBevelInherit TextAnchor_TAStartTAMiddleTAEnd LineStroke_ ContinuousDashed svgHeader rectCenteredlineaxistextcirclepolyline setPointCoordxminxmaxyminymaxwidthheight-.$fMatrixGroupDiagMat2V2$fAdditiveGroupV2 $fMonoidV2HasFrame UnitInterval FrameType fromFrametoFramemkPoint setPointX setPointYmoveLabeledPoint otherAxis$fEpsV2$fEpsV20 $fEpsFloat $fEpsDouble$fLinearMapDiagMat2V2!$fMultiplicativeSemigroupDiagMat2$fLinearMapMat2V2$fMultiplicativeSemigroupMat2 $fHermitianV2$fVectorSpaceV2 $fShowPointticks colourAttrvisstrokeDashArrayticktickXtickY textAnchornone colourFillOptcolourStrokeOptstrokeLineJoinvsvivd0vdrealshowdTsPointTickTsp_tick_valFxRowrateOpenrateHighrateLow rateCloserowNumsgridNumspacecomma rowNumSpaceparseFxDataset parseFxRow parseDateTimemkTickfromTick tspToTuple tickToFloat