Chart-tests-1.9.4: tests/Test20.hs
module Test20 where
import Text.Printf
import Graphics.Rendering.Chart
import Data.Colour
import Data.Colour.Names
import Control.Lens
import Data.Default.Class
import Utils
import Test.QuickCheck (Result(Failure))
dat :: [[Double]]
dat = [ [0.0, 23.81232131645]
, [83.87632543135, 0.0]
, [0.0, 0.0]
, [66.22192174833207, 50.85424119528999]
, [18.507408294149144, 29.94826136042779]
, [271.34564215397256, 482.0060747629345]
, [0.33308595521927825, 0.25399999403605966]
, [8.418936013584233, 5.144029932796894]
, [67.19053209933879, 62.55976275368557]
, [0.20500418021076805, 0.7397264674905577]
, [93.52395426151023, 96.01214737959424]
, [486.5332691543843, 333.4124444949074]
, [151.27192832718126, 317.4545157262858]
, [42.246424931587924, 56.89305428360467]
, [8.812241283978576, 3.0449891300138225]
, [41.763424901388305, 23.924663084356638]
, [50.77174917622324, 91.54897286917759]
, [0.743806669182276, 0.14540395376496337]
, [3.152519452338129, 3.76835741734118]
, [55.75637240640731, 66.5350935501769]
, [0.9546959351374888, 0.6673023316342984]
, [58.81299411301322, 41.6766677808916]
, [7.496126744615885, 1.4640493059283133]
, [1.21316661759154927, 2.547769800092524232]
, [0.97655290356243897, 0.90002335523825158]
, [0.74607620980626329, 0.618295299567391062]
, [33.3228047562302481, 58.28982568453356767]
, [4.73981774972079753, 5.092283613261595367]
]
chart :: Renderable (LayoutPick LogValue PlotIndex PlotIndex)
chart = layoutToRenderable layout
where
layout =
-- title + legend
layout_title .~ "Sample Horizontal Log Bars"
$ layout_title_style . font_size .~ 10
$ layout_legend . _Just . legend_position .~ LegendAbove
$ layout_legend . _Just . legend_margin .~ 10
-- X
$ layout_x_axis . laxis_style . axis_grid_style .~ solidLine 0.15 (opaque lightgrey)
$ layout_x_axis . laxis_style . axis_label_gap .~ 3
$ layout_x_axis . laxis_override .~ axisGridAtBigTicks
$ layout_top_axis_visibility . axis_show_line .~ True
$ layout_top_axis_visibility . axis_show_ticks .~ True
$ layout_top_axis_visibility . axis_show_labels .~ True
$ layout_bottom_axis_visibility . axis_show_ticks .~ True
-- Y
$ layout_y_axis . laxis_generate .~ autoIndexAxis' True alabels
$ layout_y_axis . laxis_override .~ axisGridAtTicks
$ layout_y_axis . laxis_reverse .~ True
$ layout_y_axis . laxis_style . axis_grid_style .~ solidLine 0.3 (opaque lightgrey)
$ layout_y_axis . laxis_style . axis_label_style . font_size .~ 9
$ layout_left_axis_visibility . axis_show_ticks .~ False
-- data
$ layout_plots .~ [ plotHBars bars2 ]
$ def :: Layout LogValue PlotIndex
bars2 = plot_bars_values_with_labels .~ addIndexes dat'
$ plot_bars_titles .~ ["","after","before"]
$ plot_bars_style .~ BarsStacked
$ plot_bars_spacing .~ BarsFixGap 12 5
$ plot_bars_item_styles .~ map (\c -> (solidFillStyle $ withOpacity c 0.7, Nothing)) [grey, red, green]
$ plot_bars_label_bar_hanchor .~ BHA_Right
$ plot_bars_label_bar_vanchor .~ BVA_Centre
$ plot_bars_label_text_hanchor .~ HTA_Left
$ plot_bars_label_text_vanchor .~ VTA_Centre
$ plot_bars_label_offset .~ Vector 3 0
$ plot_bars_label_style . font_slant .~ FontSlantItalic
$ def
dat' = map (\[a,b] -> [ (LogValue (min a b), if a == b then "0.0" else "")
, if a < b then
let v = b - a in
(LogValue v, printf "%0.2f" v)
else (LogValue 0, "")
, if b < a then
let v = a - b in
(LogValue v, printf "%0.2f" (-v))
else (LogValue 0, "")
]) dat
alabels =
["addedDataPointName", "removedDataPointName", "nullDataPointName"] ++
map (\n -> "longDataPointName" ++ show n) (take (length dat - 3) [1..])