úÎËÕÂAt      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs None<Separate whole and decimal part of a fractional number e.g. > wholeDecimal Safe 9:;<=DR6Numerical 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 product 3Linear 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 planeHermitian 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 objects!A !¥ 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 R2tBOverwrite either coordinate of a Point, to e.g. project on an axis)!Given a labelling function and a % p , returned a ! containing p and the computed label*Apply a function to the label,)Build a frame rooted at the origin (0, 0)- Create a  from a container of %s P, i.e. construct two points p1 and p2 such that :"p1 := inf(x,y) P p2 := sup(x,y) PuFrame corner coordinatesvFrame corner coordinateswFrame corner coordinatesxFrame corner coordinates.The . is the extent in the x direction and / is the extent in the y direction/The . is the extent in the x direction and / is the extent in the y direction0Euclidean (L^2) norm1(Normalize a V2 w.r.t. its Euclidean norm2 Create a V2 v$ from two endpoints p1, p2. That is v can be seen as pointing from p1 to p23 Create a V2 v$ from two endpoints p1, p2. That is v can be seen as pointing from p1 to p24$The origin of the axes, point (0, 0)5Create a diagonal matrixyRotation matrix6Build a  v from a %6 p (i.e. assuming v points from the origin (0,0) to p)zBuild a % p from a 6 v (i.e. assuming v points from the origin (0,0) to p)7Move a point along a vector8Move a ! along a vector9%`pointRange n p q` returns a list of `n+1` equi-spaced % s between p and qN (i.e. the input points are included as the first and last points in the list):Given two frames F1 and F2, returns a function f that maps an arbitrary vector v contained within F1 onto one contained within F2.0This function is composed of three affine maps : map v into a vector v01$ that points within the unit square,map v01 onto v01'ä. This transformation serves to e.g. flip the dataset along the y axis (since the origin of the SVG canvas is the top-left corner of the screen). If this is not needed one can just supply the identity matrix and the zero vector,map v01' onto the target frame F2. NB: we do not check that v" is actually contained within the F1 , nor that v01'Y is still contained within [0,1] x [0, 1]. This has to be supplied correctly by the user.{!Map function values across frames<X-aligned unit vector=Y-aligned unit vector|(Diagonal matrices can always be inverted}cMatrices form a monoid w.r.t. matrix multiplication and have the identity matrix as neutral element~lDiagonal matrices form a monoid w.r.t. matrix multiplication and have the identity matrix as neutral elementVectors form an additive group€,Vectors form a monoid w.r.t. vector addition^  !"#$%&'(t‚ƒ„)…*+,-uvwx./†012345y6z789‡ˆ: Initial frame Final frameFlip L-R in [0,1] x [0,1]Flip U-D in [0,1] x [0,1]Initial vector‰Š{ Initial frame Final frame Initial value; Initial frame Final frameFlip L-R in [0,1] x [0,1]Flip U-D in [0,1] x [0,1]Initial !<=‹ŒŽ|}~‘’“”€•N  !"#$%&'(t‚ƒ„)…*+,-uvwx./†012345y6z789‡ˆ:‰Š{;<=E    !"#$%&'(t‚ƒ„)…*+,-uvwx./†012345y6z789‡ˆ:‰Š{;<=‹ŒŽ|}~‘’“”€•None>4Specify the type of connection between line segmentsCESpecify at which end should the text be anchored to its current pointG%Specify a continuous or dashed strokeJ Figure dataL Figure widthM Figure heightN)Left margin fraction (w.r.t figure width)O,Right margin fraction (w.r.t figure width) P)Top margin fraction (w.r.t figure height)Q.Bottom margin fraction (w.r.t figure height) RTick label font sizeSCreate the SVG header from a TEA rectangle, defined by its anchor point coordinates and side lengths ¹> putStrLn $ renderSvg $ rect (Point 100 200) 30 60 2 Nothing (Just C.aquamarine) <rect x="100.0" y="200.0" width="30.0" height="60.0" fill="#7fffd4" stroke="none" stroke-width="2.0" />U?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>VLine 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" />–oAn array of axis-aligned identical segments (to be used as axis tickmarks), with centers given by the array of %s—"A plot axis with labeled tickmarks ÿ­> putStrLn $ renderSvg $ axis (Point 0 50) X 200 2 C.red 0.05 Continuous 15 (-45) TAEnd T.pack (V2 (-10) 0) [LabeledPoint (Point 50 1) "bla", LabeledPoint (Point 60 1) "asdf"] <line x1="0.0" y1="50.0" x2="200.0" y2="50.0" stroke="#ff0000" stroke-width="2.0" /><line x1="50.0" y1="45.0" x2="50.0" y2="55.0" stroke="#ff0000" stroke-width="2.0" /><text x="-10.0" y="0.0" transform="translate(50.0 50.0)rotate(-45.0)" font-size="15" fill="#ff0000" text-anchor="end">bla</text><line x1="60.0" y1="45.0" x2="60.0" y2="55.0" stroke="#ff0000" stroke-width="2.0" /><text x="-10.0" y="0.0" transform="translate(60.0 50.0)rotate(-45.0)" font-size="15" fill="#ff0000" text-anchor="end">asdf</text>WW) performs a number of related operations:$Maps the dataset to the figure frameRenders the X, Y axesBRenders the transformed dataset onto the newly created plot canvasYY! renders text onto the SVG canvas ConventionsThe % argument p refers to the  lower-left corner of the text box.The text box can be rotated by rot degrees around p= and then anchored at either its beginning, middle or end to p with the C flag."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>ZA 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" />["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" />\A filled polyline ¶> putStrLn $ renderSvg $ filledPolyline C.coral 0.3 [(Point 0 1), (Point 10 40), Point 34 50, Point 30 5] <polyline points="0,1 10,40 34,50 30,5" fill="#ff7f50" fill-opacity="0.3" />]AA filled band of colour, given the coordinates of its center lineThis element can be used to overlay uncertainty ranges (e.g. the first standard deviation) associated with a given data series.^A ^k glyph for time series plots. This is a type of box glyph, commonly used in plotting financial time series.ïSome financial market quantities such as currency exchange rates are aggregated over some time period (e.g. a day) and summarized by various quantities, for example opening and closing rates, as well as maximum and minimum over the period.By convention, the ^ colour depends on the derivative sign of one such quantity (e.g. it is green if the market closes higher than it opened, and red otherwise)._#Move a Svg entity to a new position`gMove point to the SVG frame of reference (for which the origing is a the top-left corner of the screen)a6Move LabeledPoint to the SVG frame of reference (uses ` ) ˜Render a Colour from colour into a blaze Attribute6>?@ABCDEFGHIJKLMNOPQRSTWidthHeight Stroke width Stroke colour Fill colourCorner point coordinates UWidthHeight Stroke width Stroke colour Fill colourCenter coordinates V First point Second point Stroke width Stroke type Stroke colour™š›Length Stroke width Font size Label angleLabel rendering Label shift –Axis Length  Stroke width Stroke colourCenter coordinatesœ— Origin coordinatesAxis (i.e. either  or )Length of the axis Stroke width Stroke colour0The tick length is a fraction of the axis length Stroke typeLabel font sizeLabel rotation angle &How to anchor a text label to the axis How to render the tick label Offset the label Tick center coordinatesW  X tick label Y tick labelX label rotation angleY label rotation angle Stroke width Stroke colour X axis labels Y axis labels Data rendering function DataXYRotation angle of the textbox Font size Font colour#How to anchor the text to the pointText #Displacement w.r.t. rotated textboxHInitial position of the text box (i.e. before rotation and displacement)ZCenterRadius Stroke width Stroke colour Fill colour[ Stroke width Stroke type Stroke join type  Stroke colour Data žŸ \ Fill colour Fill opacityContour point coordinates] Fill colour Fill opacityBand maximum valueBand minimum valueCenterline points^ FIf True, fill the box with the first colour, otherwise with the secondBox maximum valueBox minimum valueLine maximum value Line minimum value Box width Stroke widthFirst box colourSecond box colour Line stroke colour  Data point¡_` Initial frame Final frameFlip L-R in [0,1] x [0,1]Point in the initial framea˜¢£¤¥¦§m  !"#$%&'(„)*+,-uvwx./0123456789:{;<=>?@ABCFDEGHIJKLMNOPQRSTUVš–—WXYZ[\]^¡_`a%>?@ABCDEFGHIJKLMNOPQRSTUV™š›–œ—WXYZ[žŸ \]^¡_`a˜¢£¤¥¦§NoneNoneNoneMarco Zocca 2017BSD3Marco Zocca <zocca marco gmail>Noneb  !"#$%&'()*+,-./0123456789:;<=>?@ABCFDEGHIJKLMNOPQRSTUVWXYZ[\]^_`abTUZVY[\]^WJKLMNOPQRGHI>?@ABCDEFS_ %&'(!"#$)* 54<=012678;3`a9:-X+,./  NonebA point in a time seriesf/An instant, defined by date (Day) and TimeOfDayhACreate a Tick from valid (year, month, day, hour, minute, second)jMap a Tick onto the rationalskMap a rational onto a Tick bcdefghijklmn bcdefghijklmn fghbcdeijklmn bcdefghijklmn None:¨6Compute the plotting coordinates of a timeseries pointÔPreprocess the dataset for plotting 1. Remap the figure data to fit within the FigData ranges, expressed in pixels 2. Flip the data along the y axis since the origin in SVG is the top-left corner of the screen© Create a ! from a time series point (b). The d{ (time axis) field will be used for the x coordinate, whereas both fields of TsPoint may be used to create the label field.‹NB : The coordinates of the resulting LabelPoint still live in the original data space; they must be rescaled to fit in the figure viewportª«¬­®¯¨©°±²³´µ¶·¸¹ª«¬­®¯¨©°±²³´µ¶·¸ ª«¬­®¯¨©°±²³´µ¶·¸¹ Safeº»º»º» None bcdefghijklmnª«¬­®¯¨©°±²³´µ¶·¸º»¼   !"##$%&''()**+,--./0123456789:;<=>?@ABCDEFGHIJKLMNOPQQRSTUVWXYZ[\]^_`abcdefghijkllmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬ ­ ® ¯ ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿À'plot-light-0.2.3-5GpbIVQC6Ar1VHTJR4cj17Graphics.Rendering.Plot.LightData.TimeSeries,Graphics.Rendering.Plot.Light.Internal.Utils/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.Candlestick2Graphics.Rendering.Plot.Light.PlotTypes.TimeSeries Data.Parsers'Graphics.Rendering.Plot.Light.PlotTypestoFloat wholeDecimalEps~= MatrixGroup<\>DiagMat2DMat2MultiplicativeSemigroup## LinearMap#>Mat2 Hermitian InnerProduct<.> VectorSpaceScalar.* AdditiveGroupzero^+^^-^V2AxisXYFrame_fpmin_fpmax LabeledPoint_lp_lplabelPoint_px_py labelPointmapLabelmkFrame mkFrameOriginframeFromPointswidthheightnorm2 normalize2v2fromEndpoints-.origindiagMat2 v2fromPoint movePointmoveLabeledPointV2 pointRange frameToFramemoveLabeledPointBwFramese1e2StrokeLineJoin_MiterRoundBevelInherit TextAnchor_TAStartTAMiddleTAEnd LineStroke_ ContinuousDashed FigureDatafigWidth figHeight figLeftMFrac figRightMFrac figTopMFracfigBottomMFracfigLabelFontSize svgHeaderrect rectCenteredlinetoPlotframeFromFigDatatextcirclepolylinefilledPolyline filledBand candlestick translateSvg toSvgFrame toSvgFrameLPTsPointTsp_tick_valTickmkTicktickToFractionalfromTicktoTickhourTick halfHourTickquarterHourTick$fEqTick $fShowTick $fOrdTick $fEqTsPoint $fShowTsPoint setPointCoordxminxmaxyminymaxrotMtx pointFromV2frameToFrameValue$fMatrixGroupDiagMat2V2 $fMonoidMat2$fMonoidDiagMat2$fAdditiveGroupV2 $fMonoidV2mkPoint setPointX setPointYmkLabeledPointmoveLabeledPoint otherAxis fromFrametoFrameflipLR01flipUD01$fEpsV2$fEpsV20 $fEpsFloat $fEpsDouble$fLinearMapDiagMat2V2!$fMultiplicativeSemigroupDiagMat2$fLinearMapMat2V2$fMultiplicativeSemigroupMat2 $fHermitianV2$fVectorSpaceV2 $fShowPointticksaxis colourAttrstrokeDashArraytick labeledTick labeledTicks textAnchornone colourFillOptcolourStrokeOptstrokeLineJoinvsvivd0vdrealvdstsAxistspToLPFxRowrateOpenrateHighrateLow rateCloselabeledTsPointRangeframeToFrameFxRowc1fdat1dat1ptxptyfromto$fFunctorFxRowspacecomma