chart: messing with colours

This commit is contained in:
Simon Michael 2010-02-06 16:08:51 +00:00
parent e96350c3f1
commit 885ec16f58

View File

@ -15,9 +15,13 @@ import Ledger.Ledger
import Ledger.Commodity import Ledger.Commodity
import Options import Options
import Control.Monad (liftM3)
import Graphics.Rendering.Chart import Graphics.Rendering.Chart
import Data.Colour import Data.Colour
import Data.Colour.Names import Data.Colour.Names
import Data.Colour.RGBSpace
import Data.Colour.RGBSpace.HSL (hsl)
import Data.Colour.SRGB.Linear (rgb)
import Data.List import Data.List
-- | Generate an image with the pie chart and write it to a file -- | Generate an image with the pie chart and write it to a file
@ -48,7 +52,7 @@ genPie opts _ l = defaultPieLayout
{ pie_background_ = solidFillStyle $ opaque $ white { pie_background_ = solidFillStyle $ opaque $ white
, pie_plot_ = pie_chart } , pie_plot_ = pie_chart }
where where
pie_chart = defaultPieChart { pie_data_ = items } pie_chart = defaultPieChart { pie_data_ = items, pie_colors_ = mkColours}
items = mapMaybe (uncurry accountPieItem) $ items = mapMaybe (uncurry accountPieItem) $
flatten $ flatten $
balances $ balances $
@ -75,3 +79,11 @@ accountPieItem accname balance =
if balance == 0 if balance == 0
then Nothing then Nothing
else Just $ PieItem accname 0 balance else Just $ PieItem accname 0 balance
-- | Generate an infinite color list suitable for charts.
mkColours :: [AlphaColour Double]
mkColours = cycle $ [opaque $ rgbToColour $ hsl h s l | (h,s,l) <- liftM3 (,,)
[100] [0.7] [0.2,0.3..0.6] ]
rgbToColour :: (Fractional a) => RGB a -> Colour a
rgbToColour (RGB r g b) = rgb r g b