úÎaÎ[m<      !"#$%&'()*+,-./0123456789:; Safe <(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 R2=BOverwrite either coordinate of a Point, to e.g. project on an axis>Frame corner coordinates?Frame corner coordinates@Frame corner coordinatesAFrame corner coordinatesBThe B is the extent in the x direction and C is the extent in the y directionCThe B is the extent in the x direction and C is the extent in the y direction#<DEF G=HIJ>?@ABCK#<DEF G=HIJ>?@ABCK<DEF  G=HIJ>?@ABCKSafe:<=DR!.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 vectors5Matrix action, i.e. linear transformation of a vectorHA Mat2 can be seen as a linear operator that acts on points in the planeHermitian space : inner product Inner product 2Vector space : multiplication by a scalar quantity"Scalar multiplication#Additive group : v ^+^ zero == zero ^+^ v == v v ^-^ v == zero$Identity element%Group action ("sum")&$Inverse group action ("subtraction")'V2 is a vector in R^2)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 p2L 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 vector0Move a  along a vector1The 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 user2The 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 user3X-aligned unit vector4Y-aligned unit vectorM(Diagonal matrices can always be invertedNVectors form an additive groupO,Vectors form a monoid w.r.t. vector addition, !"#$%&'()*+L,-./01234MPQRSTUNO# !"#$%&'()*+L,-./01234 !"#$%&'()*+L,-./01234MPQRSTUNONone 5 Create a  > structure from the top-left corner point and its side lengths6Create the SVG header from  7A filled rectangle8Line segment between two s ‡> putStrLn $ renderSvg (line 0 0 1 1 0.1 C.blueviolet) <line x1="0.0" y1="0.0" x2="1.0" y2="1.0" stroke="#8a2be2" stroke-width="0.1" />VoAn array of axis-aligned identical segments (to be used as axis tickmarks), with centers given by the array of s9An axis with tickmarks ÿ³> putStrLn $ renderSvg $ axis X 200 2 C.red 0.05 (Point 150 10) [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" />:: renders text onto the SVG canvas. It is also possible to rotate and move the text, however the order of these modifiers matters. NB1: The  parameter p determines the initial¦ position of the bottom-left corner of the text box. If a nonzero rotation is applied, the whole text box will move on a circle of radius || x^2 + y^2 || centered at p. NB2: the W and X attributes apply to the center of the visible text instead. ¤> putStrLn $ renderSvg $ text (-45) C.red "hullo!" (V2 (-30) 0) (Point 0 20) <text x="-30" y="0" transform="translate(0 20)rotate(-45)" fill="#ff0000">hullo!</text>;"Polyline (piecewise straight line) ž> putStrLn $ renderSvg (polyline [(1,1), (2,1), (2,2), (3,4)] 0.1 C.red) <polyline points="1,1 2,1 2,2 3,4" fill="none" stroke="#ff0000" stroke-width="0.1" />YRender a Colour from colour into a blaze AttributeZFor use e.g. in viewbox567Center coordinates WidthHeightColour8 First point Second point Stroke width Stroke colour[\Length Stroke width Stroke colourCenter coordinates]Length Stroke width Stroke colourCenter coordinatesVAxis Length  Stroke width Stroke colourCenter coordinates9Axis (i.e. either  or )Length Stroke width Stroke colour(Tick length fraction (w.r.t axis length)Axis center coordinateTick center coordinates:Rotation angle  Font colourText  Displacement'Initial center position of the text box;Data Stroke width Stroke colour^_Y`Zabcd>  !"#$%&'()*+,-./012345678[V9:;5678[\]V9:;^_Y`ZabcdNoneNoneMarco Zocca 2017BSD3Marco Zocca <zocca marco gmail>None<  !"#$%&'()*+,-./0123456789:;<789:;  56'(-,34)*+./021#$%& !"SafeeA point in a time seriesf/An instant, defined by date (Day) and TimeOfDay eghifjklmnop eghifjklmnopeghifjklmnopNoneq%Parse a row of numbers, separated by sepr&parse a grid of numbers, separated by sepstqurvwxstqurvwxstqurvwx NoneyACreate a Tick from valid (year, month, day, hour, minute, second)zMap a Tick onto the rationalsyz{|yz{|yz{|}      !"##$%&'()*+,-../0123456789:;<=>?@ABCDEFGHIBJKLMNOPQRSTUVWXYZ[\]^\]_`abcdefghijklmnopmqqrstuvwxyz{|} ~  € ‚)plot-light-0.1.0.5-BfROI6AlU45Bpml9eX59wxGraphics.Rendering.Plot.Light,Graphics.Rendering.Plot.Light.Internal.Types/Graphics.Rendering.Plot.Light.Internal.Geometry&Graphics.Rendering.Plot.Light.Internal/Graphics.Rendering.Plot.Light.PlotTypes.Heatmap>Graphics.Rendering.Plot.Light.PlotTypes.TimeSeries.CandlestickData.TimeSeries.Forex%Graphics.Rendering.Plot.Light.IO.Text2Graphics.Rendering.Plot.Light.PlotTypes.TimeSeriesAxisXY LabeledPoint_lp_lplabelPoint_px_py FigureDataFigData_width_height_xmin_xmax_ymin_ymax MatrixGroup<\>DiagMat2DMat2MultiplicativeSemigroup## LinearMap#>Mat2 Hermitian InnerProduct<.> VectorSpaceScalar.* AdditiveGroupzero^+^^-^V2norm2 normalize2mkV2fromEndpointsorigindiagMat2 v2fromPoint movePointmoveLabeledPointV2 toUnitSquarefromUnitSquaree1e2 mkFigureData svgHeader rectCenteredlineaxistextpolylineFrame setPointCoordxminxmaxyminymaxwidthheight_fpmin_fpmaxmkPoint setPointX setPointYmoveLabeledPoint otherAxis-.$fMatrixGroupDiagMat2V2$fAdditiveGroupV2 $fMonoidV2$fLinearMapDiagMat2V2!$fMultiplicativeSemigroupDiagMat2$fLinearMapMat2V2$fMultiplicativeSemigroupMat2 $fHermitianV2$fVectorSpaceV2ticks(blaze-svg-0.3.6.1-65bbTaRDXhJ9eBAavzbkqqText.Blaze.Svg.Internalrotate translate colourAttrvisticktickXtickYshowP2nonevivdvdsvfvfsTsPointTickTsp_tick_valFxRowrateOpenrateHighrateLow rateCloserowNumsgridNumspacecomma rowNumSpaceparseFxDataset parseFxRow parseDateTimemkTickfromTick tspToTuple tickToFloat