plot 0.1.3.0 → 0.1.3.1
raw patch · 4 files changed
+38/−33 lines, 4 files
Files
- CHANGES +3/−0
- lib/Graphics/Rendering/Plot/Render/Plot/Annotation.hs +13/−11
- lib/Graphics/Rendering/Plot/Render/Plot/Data.hs +21/−21
- plot.cabal +1/−1
CHANGES view
@@ -47,3 +47,6 @@ 0.1.3.0: * change scaling so that miniscule linewidths don't occur++0.1.3.1:+ * fix error in scaling
lib/Graphics/Rendering/Plot/Render/Plot/Annotation.hs view
@@ -52,8 +52,8 @@ -- transform to data coordinates cairo $ do C.translate x (y+h)- C.scale xscale yscalel- C.translate (-xmin) yminl+ --C.scale xscale yscalel+ C.translate (-xmin*xscale) (yminl*yscalel) flipVertical put (BoundingBox (-xmin) (yminl) (xmax-xmin) (ymaxl-yminl)) mapM_ (renderAnnotation xscale yscalel) an@@ -65,8 +65,8 @@ renderAnnotation :: Double -> Double -> Annotation -> Render () renderAnnotation xscale yscale (AnnArrow h lt (x1',y1') (x2',y2')) = do formatLineSeries lt- let (x1,y1) = (x1'/xscale,y1'/yscale)- let (x2,y2) = (x2'/xscale,y2'/yscale)+ let (x1,y1) = (x1'*xscale,y1'*yscale)+ let (x2,y2) = (x2'*xscale,y2'*yscale) cairo $ do C.moveTo x1 y1 C.lineTo x2 y2@@ -90,8 +90,8 @@ C.stroke renderAnnotation xscale yscale (AnnOval f b (x1',y1') (x2',y2')) = do (_,bc,c) <- formatBarSeries b- let (x1,y1) = (x1'/xscale,y1'/yscale)- let (x2,y2) = (x2'/xscale,y2'/yscale)+ let (x1,y1) = (x1'*xscale,y1'*yscale)+ let (x2,y2) = (x2'*xscale,y2'*yscale) let width = x2 - x1 height = y2 - y1 x = x1 + width/2@@ -110,8 +110,8 @@ C.newPath renderAnnotation xscale yscale (AnnRect f b (x1',y1') (x2',y2')) = do (_,bc,c) <- formatBarSeries b- let (x1,y1) = (x1'/xscale,y1'/yscale)- let (x2,y2) = (x2'/xscale,y2'/yscale)+ let (x1,y1) = (x1'*xscale,y1'*yscale)+ let (x2,y2) = (x2'*xscale,y2'*yscale) cairo $ do C.save setColour c@@ -124,17 +124,19 @@ C.newPath renderAnnotation xscale yscale (AnnGlyph pt (x1',y1')) = do (pw,g) <- formatPointSeries pt- let (x1,y1) = (x1'/xscale,y1'/yscale)+ let (x1,y1) = (x1'*xscale,y1'*yscale) cairo $ do C.moveTo x1 y1 renderGlyph pw g renderAnnotation xscale yscale (AnnText te (x1',y1')) = do -- (x,y) <- cairo $ C.userToDevice x1 y1- let (x1,y1) = (x1'/xscale,y1'/yscale)+ let (x1,y1) = (x1'*xscale,y1'*yscale) cairo $ do C.save --C.scale (recip xscale) (recip (-yscale))- _ <- renderText te TRight TTop (x1*xscale) (y1*yscale)+ flipVertical+-- _ <- renderText te TRight TTop (x1') (y1')+ _ <- renderText te TRight TTop (x1) (y1) cairo $ C.restore return () renderAnnotation _ _ (AnnCairo r) = do
lib/Graphics/Rendering/Plot/Render/Plot/Data.hs view
@@ -141,7 +141,7 @@ cairo $ do C.translate x (y+h) --C.scale xscale yscalel- C.translate (-xmin) yminl+ C.translate (-xmin*xscale) (yminl*yscalel) flipVertical mapM_ (renderSeries xsc yscl xmin xmax xscale yscalel) los cairo $ C.restore@@ -155,7 +155,7 @@ cairo $ do C.translate x (y+h) --C.scale xscale yscaleu- C.translate xmin yminu+ C.translate (-xmin*xscale) (yminu*yscaleu) flipVertical mapM_ (renderSeries xsc yscu xmin xmax xscale yscaleu) ups cairo $ C.restore)@@ -285,7 +285,7 @@ diff = if mono then diff' else 1 cairo $ do case s of- Nothing -> C.moveTo ((t @> xmin_ix)/xscale) ((y @> xmin_ix)/yscale)+ Nothing -> C.moveTo ((t @> xmin_ix)*xscale) ((y @> xmin_ix)*yscale) Just s' -> s' _ <- runMaybeT $ do mapVectorWithIndexM_ (\i y' -> do@@ -314,7 +314,7 @@ diff = if mono then diff' else 1 cairo $ do case s of- Nothing -> C.moveTo ((t @> xmin_ix)/xscale) (((fst $ y) @> xmin_ix)/yscale)+ Nothing -> C.moveTo ((t @> xmin_ix)*xscale) (((fst $ y) @> xmin_ix)*yscale) Just s' -> s' _ <- runMaybeT $ mapVectorWithIndexM_ (\i t' -> do when (i >= xmin_ix && i `mod` diff == 0)@@ -349,14 +349,14 @@ ----------------------------------------------------------------------------- renderLineSample :: Double → Double -> Double -> Double -> C.Render ()-renderLineSample xscale yscale x y = C.lineTo (x/xscale) (y/yscale)+renderLineSample xscale yscale x y = C.lineTo (x*xscale) (y*yscale) endLineSample :: Double -> Double -> C.Render () endLineSample _ _ = C.stroke renderPointSample :: LineWidth -> Glyph -> Double -> Double -> Double -> Double -> C.Render () renderPointSample pz g xscale yscale x y = do- C.moveTo (x/xscale) (y/yscale)+ C.moveTo (x*xscale) (y*yscale) renderGlyph pz g endPointSample :: Double -> Double -> C.Render ()@@ -364,9 +364,9 @@ renderImpulseSample :: Double -> Double -> Double -> Double -> C.Render () renderImpulseSample xscale yscale x y = do- let x' = x/xscale+ let x' = x*xscale C.moveTo x' 0- C.lineTo x (y/yscale)+ C.lineTo x (y*yscale) C.stroke endImpulseSample :: Double -> Double -> C.Render ()@@ -375,20 +375,20 @@ renderStepSample :: Double -> Double -> Double -> Double -> C.Render () renderStepSample xscale yscale x y = do (x',_) <- C.getCurrentPoint- let y' = y/yscale+ let y' = y*yscale C.lineTo x' y'- C.lineTo (x/xscale) y'+ C.lineTo (x*xscale) y' endStepSample :: Double -> Double -> C.Render () endStepSample _ _ = C.stroke renderAreaSample :: Double -> Double -> Double -> Double -> C.Render ()-renderAreaSample xscale yscale x y = C.lineTo (x/xscale) (y/yscale)+renderAreaSample xscale yscale x y = C.lineTo (x*xscale) (y*yscale) endAreaSample :: Double -> Double -> Double -> Double -> C.Render () endAreaSample x0 _ xscale _ = do (x',_) <- C.getCurrentPoint- let x0' = x0/xscale+ let x0' = x0*xscale C.lineTo x' 0 C.lineTo x0' 0 -- C.lineTo x0 y0@@ -399,8 +399,8 @@ renderBarSample :: Width -> Color -> Color -> Double -> Double -> Double -> Double -> C.Render () renderBarSample bw c bc xscale yscale x y = do setColour bc- let bw' = bw/xscale- C.rectangle ((x/xscale)-bw'/2) 0 bw' (y/yscale)+ let bw' = bw*xscale+ C.rectangle ((x*xscale)-bw'/2) 0 bw' (y*yscale) C.strokePreserve setColour c C.fill@@ -411,10 +411,10 @@ renderHistSample :: Width -> Color -> Color -> Double -> Double -> Double -> Double -> C.Render () renderHistSample _ c bc xscale yscale x y = do (x',_) <- C.getCurrentPoint- let x'' = x/xscale+ let x'' = x*xscale C.stroke setColour bc- C.rectangle x' 0 (x''-x') (y/yscale)+ C.rectangle x' 0 (x''-x') (y*yscale) C.strokePreserve setColour c C.fill@@ -426,9 +426,9 @@ renderCandleSample :: Width -> Color -> Color -> Double -> Double -> Double -> (Double,Double) -> C.Render () renderCandleSample bw c bc xscale yscale x (yl,yu) = do setColour bc- let (yl',yu') = (yl/yscale,yu/yscale)- bw' = bw/xscale- C.rectangle ((x/xscale)-bw'/2) yl' bw' (yu'-yl')+ let (yl',yu') = (yl*yscale,yu*yscale)+ bw' = bw*xscale+ C.rectangle ((x*xscale)-bw'/2) yl' bw' (yu'-yl') C.strokePreserve --liftIO $ putStrLn $ (show yl') ++ " " ++ (show yu') if (yl < yu)@@ -444,8 +444,8 @@ renderWhiskerSample :: Width -> Color -> Color → Bool -> Double -> Double -> Double -> (Double,Double) -> C.Render () renderWhiskerSample bw _ bc whiskers x xscale yscale (yl,yu) = do setColour bc- let (x',yl',yu') = (x/xscale,yl/yscale,yu/yscale)- bw' = bw/xscale+ let (x',yl',yu') = (x*xscale,yl*yscale,yu*yscale)+ bw' = bw*xscale C.moveTo x' yl' C.lineTo x' yu' if whiskers
plot.cabal view
@@ -1,5 +1,5 @@ Name: plot-Version: 0.1.3.0+Version: 0.1.3.1 License: BSD3 License-file: LICENSE Copyright: (c) A.V.H. McPhail 2010