Chart 0.16 → 0.17
raw patch · 4 files changed
+158/−83 lines, 4 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- Graphics.Rendering.Chart.Grid: above, beside :: Grid a -> Grid a -> Grid a
- Graphics.Rendering.Chart.Grid: aboveN, besideN :: [Grid a] -> Grid a
- Graphics.Rendering.Chart.Grid: fullColLeft :: a -> Double -> Grid a -> Grid a
- Graphics.Rendering.Chart.Grid: fullColRight :: a -> Double -> Grid a -> Grid a
- Graphics.Rendering.Chart.Grid: fullRowAbove :: a -> Double -> Grid a -> Grid a
- Graphics.Rendering.Chart.Grid: fullRowBelow :: a -> Double -> Grid a -> Grid a
- Graphics.Rendering.Chart.Layout: data AnyLayout1 x
- Graphics.Rendering.Chart.Layout: renderLayout1sStacked :: Ord x => [AnyLayout1 x] -> Renderable ()
- Graphics.Rendering.Chart.Layout: withAnyOrdinate :: (Ord x, Ord y) => Layout1 x y -> AnyLayout1 x
- Graphics.Rendering.Chart.Types: moveTo, lineTo :: Point -> CRender ()
+ Graphics.Rendering.Chart.Grid: above :: Grid a -> Grid a -> Grid a
+ Graphics.Rendering.Chart.Grid: aboveN :: [Grid a] -> Grid a
+ Graphics.Rendering.Chart.Grid: aboveWide :: Grid a -> a -> Grid a
+ Graphics.Rendering.Chart.Grid: beside :: Grid a -> Grid a -> Grid a
+ Graphics.Rendering.Chart.Grid: besideN :: [Grid a] -> Grid a
+ Graphics.Rendering.Chart.Grid: besideTall :: Grid a -> a -> Grid a
+ Graphics.Rendering.Chart.Grid: tallBeside :: a -> Grid a -> Grid a
+ Graphics.Rendering.Chart.Grid: wideAbove :: a -> Grid a -> Grid a
+ Graphics.Rendering.Chart.Layout: StackedLayout :: (Layout1 x y) -> StackedLayout x
+ Graphics.Rendering.Chart.Layout: StackedLayouts :: [StackedLayout x] -> Bool -> Bool -> StackedLayouts x
+ Graphics.Rendering.Chart.Layout: data StackedLayout x
+ Graphics.Rendering.Chart.Layout: data StackedLayouts x
+ Graphics.Rendering.Chart.Layout: defaultStackedLayouts :: StackedLayouts x
+ Graphics.Rendering.Chart.Layout: renderStackedLayouts :: Ord x => StackedLayouts x -> Renderable ()
+ Graphics.Rendering.Chart.Layout: slayouts_compress_legend :: T (StackedLayouts x_a1aQP) Bool
+ Graphics.Rendering.Chart.Layout: slayouts_compress_legend_ :: StackedLayouts x -> Bool
+ Graphics.Rendering.Chart.Layout: slayouts_compress_xlabels :: T (StackedLayouts x_a1aQP) Bool
+ Graphics.Rendering.Chart.Layout: slayouts_compress_xlabels_ :: StackedLayouts x -> Bool
+ Graphics.Rendering.Chart.Layout: slayouts_layouts :: T (StackedLayouts x_a1aQP) [StackedLayout x_a1aQP]
+ Graphics.Rendering.Chart.Layout: slayouts_layouts_ :: StackedLayouts x -> [StackedLayout x]
+ Graphics.Rendering.Chart.Types: lineTo :: Point -> CRender ()
+ Graphics.Rendering.Chart.Types: moveTo :: Point -> CRender ()
- Graphics.Rendering.Chart.Axis.Floating: la_labelf :: T (LinearAxisParams a_aix2) (a_aix2 -> String)
+ Graphics.Rendering.Chart.Axis.Floating: la_labelf :: T (LinearAxisParams a_apq9) (a_apq9 -> String)
- Graphics.Rendering.Chart.Axis.Floating: la_nLabels :: T (LinearAxisParams a_aix2) Int
+ Graphics.Rendering.Chart.Axis.Floating: la_nLabels :: T (LinearAxisParams a_apq9) Int
- Graphics.Rendering.Chart.Axis.Floating: la_nTicks :: T (LinearAxisParams a_aix2) Int
+ Graphics.Rendering.Chart.Axis.Floating: la_nTicks :: T (LinearAxisParams a_apq9) Int
- Graphics.Rendering.Chart.Axis.Floating: loga_labelf :: T (LogAxisParams a_aix1) (a_aix1 -> String)
+ Graphics.Rendering.Chart.Axis.Floating: loga_labelf :: T (LogAxisParams a_apq8) (a_apq8 -> String)
- Graphics.Rendering.Chart.Axis.Types: axis_grid :: T (AxisData x_adrs) [x_adrs]
+ Graphics.Rendering.Chart.Axis.Types: axis_grid :: T (AxisData x_ahyl) [x_ahyl]
- Graphics.Rendering.Chart.Axis.Types: axis_labels :: T (AxisData x_adrs) [[(x_adrs, String)]]
+ Graphics.Rendering.Chart.Axis.Types: axis_labels :: T (AxisData x_ahyl) [[(x_ahyl, String)]]
- Graphics.Rendering.Chart.Axis.Types: axis_ticks :: T (AxisData x_adrs) [(x_adrs, Double)]
+ Graphics.Rendering.Chart.Axis.Types: axis_ticks :: T (AxisData x_ahyl) [(x_ahyl, Double)]
- Graphics.Rendering.Chart.Axis.Types: axis_tropweiv :: T (AxisData x_adrs) (Range -> Double -> x_adrs)
+ Graphics.Rendering.Chart.Axis.Types: axis_tropweiv :: T (AxisData x_ahyl) (Range -> Double -> x_ahyl)
- Graphics.Rendering.Chart.Axis.Types: axis_viewport :: T (AxisData x_adrs) (Range -> x_adrs -> Double)
+ Graphics.Rendering.Chart.Axis.Types: axis_viewport :: T (AxisData x_ahyl) (Range -> x_ahyl -> Double)
- Graphics.Rendering.Chart.Layout: laxis_generate :: T (LayoutAxis x_aUJa) (AxisFn x_aUJa)
+ Graphics.Rendering.Chart.Layout: laxis_generate :: T (LayoutAxis x_a1aRN) (AxisFn x_a1aRN)
- Graphics.Rendering.Chart.Layout: laxis_override :: T (LayoutAxis x_aUJa) (AxisData x_aUJa -> AxisData x_aUJa)
+ Graphics.Rendering.Chart.Layout: laxis_override :: T (LayoutAxis x_a1aRN) (AxisData x_a1aRN -> AxisData x_a1aRN)
- Graphics.Rendering.Chart.Layout: laxis_reverse :: T (LayoutAxis x_aUJa) Bool
+ Graphics.Rendering.Chart.Layout: laxis_reverse :: T (LayoutAxis x_a1aRN) Bool
- Graphics.Rendering.Chart.Layout: laxis_style :: T (LayoutAxis x_aUJa) AxisStyle
+ Graphics.Rendering.Chart.Layout: laxis_style :: T (LayoutAxis x_a1aRN) AxisStyle
- Graphics.Rendering.Chart.Layout: laxis_title :: T (LayoutAxis x_aUJa) String
+ Graphics.Rendering.Chart.Layout: laxis_title :: T (LayoutAxis x_a1aRN) String
- Graphics.Rendering.Chart.Layout: laxis_title_style :: T (LayoutAxis x_aUJa) CairoFontStyle
+ Graphics.Rendering.Chart.Layout: laxis_title_style :: T (LayoutAxis x_a1aRN) CairoFontStyle
- Graphics.Rendering.Chart.Layout: laxis_visible :: T (LayoutAxis x_aUJa) ([x_aUJa] -> Bool)
+ Graphics.Rendering.Chart.Layout: laxis_visible :: T (LayoutAxis x_a1aRN) ([x_a1aRN] -> Bool)
- Graphics.Rendering.Chart.Layout: layout1_background :: T (Layout1 x_aUJ8 y_aUJ9) CairoFillStyle
+ Graphics.Rendering.Chart.Layout: layout1_background :: T (Layout1 x_a1aQU y_a1aQV) CairoFillStyle
- Graphics.Rendering.Chart.Layout: layout1_bottom_axis :: T (Layout1 x_aUJ8 y_aUJ9) (LayoutAxis x_aUJ8)
+ Graphics.Rendering.Chart.Layout: layout1_bottom_axis :: T (Layout1 x_a1aQU y_a1aQV) (LayoutAxis x_a1aQU)
- Graphics.Rendering.Chart.Layout: layout1_grid_last :: T (Layout1 x_aUJ8 y_aUJ9) Bool
+ Graphics.Rendering.Chart.Layout: layout1_grid_last :: T (Layout1 x_a1aQU y_a1aQV) Bool
- Graphics.Rendering.Chart.Layout: layout1_left_axis :: T (Layout1 x_aUJ8 y_aUJ9) (LayoutAxis y_aUJ9)
+ Graphics.Rendering.Chart.Layout: layout1_left_axis :: T (Layout1 x_a1aQU y_a1aQV) (LayoutAxis y_a1aQV)
- Graphics.Rendering.Chart.Layout: layout1_legend :: T (Layout1 x_aUJ8 y_aUJ9) (Maybe LegendStyle)
+ Graphics.Rendering.Chart.Layout: layout1_legend :: T (Layout1 x_a1aQU y_a1aQV) (Maybe LegendStyle)
- Graphics.Rendering.Chart.Layout: layout1_margin :: T (Layout1 x_aUJ8 y_aUJ9) Double
+ Graphics.Rendering.Chart.Layout: layout1_margin :: T (Layout1 x_a1aQU y_a1aQV) Double
- Graphics.Rendering.Chart.Layout: layout1_plot_background :: T (Layout1 x_aUJ8 y_aUJ9) (Maybe CairoFillStyle)
+ Graphics.Rendering.Chart.Layout: layout1_plot_background :: T (Layout1 x_a1aQU y_a1aQV) (Maybe CairoFillStyle)
- Graphics.Rendering.Chart.Layout: layout1_plots :: T (Layout1 x_aUJ8 y_aUJ9) [Either (Plot x_aUJ8 y_aUJ9) (Plot x_aUJ8 y_aUJ9)]
+ Graphics.Rendering.Chart.Layout: layout1_plots :: T (Layout1 x_a1aQU y_a1aQV) [Either (Plot x_a1aQU y_a1aQV) (Plot x_a1aQU y_a1aQV)]
- Graphics.Rendering.Chart.Layout: layout1_right_axis :: T (Layout1 x_aUJ8 y_aUJ9) (LayoutAxis y_aUJ9)
+ Graphics.Rendering.Chart.Layout: layout1_right_axis :: T (Layout1 x_a1aQU y_a1aQV) (LayoutAxis y_a1aQV)
- Graphics.Rendering.Chart.Layout: layout1_title :: T (Layout1 x_aUJ8 y_aUJ9) String
+ Graphics.Rendering.Chart.Layout: layout1_title :: T (Layout1 x_a1aQU y_a1aQV) String
- Graphics.Rendering.Chart.Layout: layout1_title_style :: T (Layout1 x_aUJ8 y_aUJ9) CairoFontStyle
+ Graphics.Rendering.Chart.Layout: layout1_title_style :: T (Layout1 x_a1aQU y_a1aQV) CairoFontStyle
- Graphics.Rendering.Chart.Layout: layout1_top_axis :: T (Layout1 x_aUJ8 y_aUJ9) (LayoutAxis x_aUJ8)
+ Graphics.Rendering.Chart.Layout: layout1_top_axis :: T (Layout1 x_a1aQU y_a1aQV) (LayoutAxis x_a1aQU)
- Graphics.Rendering.Chart.Layout: layout1_yaxes_control :: T (Layout1 x_aUJ8 y_aUJ9) (([y_aUJ9], [y_aUJ9]) -> ([y_aUJ9], [y_aUJ9]))
+ Graphics.Rendering.Chart.Layout: layout1_yaxes_control :: T (Layout1 x_a1aQU y_a1aQV) (([y_a1aQV], [y_a1aQV]) -> ([y_a1aQV], [y_a1aQV]))
- Graphics.Rendering.Chart.Plot.Annotation: plot_annotation_angle :: T (PlotAnnotation x_aQhq y_aQhr) Double
+ Graphics.Rendering.Chart.Plot.Annotation: plot_annotation_angle :: T (PlotAnnotation x_a1432 y_a1433) Double
- Graphics.Rendering.Chart.Plot.Annotation: plot_annotation_hanchor :: T (PlotAnnotation x_aQhq y_aQhr) HTextAnchor
+ Graphics.Rendering.Chart.Plot.Annotation: plot_annotation_hanchor :: T (PlotAnnotation x_a1432 y_a1433) HTextAnchor
- Graphics.Rendering.Chart.Plot.Annotation: plot_annotation_style :: T (PlotAnnotation x_aQhq y_aQhr) CairoFontStyle
+ Graphics.Rendering.Chart.Plot.Annotation: plot_annotation_style :: T (PlotAnnotation x_a1432 y_a1433) CairoFontStyle
- Graphics.Rendering.Chart.Plot.Annotation: plot_annotation_values :: T (PlotAnnotation x_aQhq y_aQhr) [(x_aQhq, y_aQhr, String)]
+ Graphics.Rendering.Chart.Plot.Annotation: plot_annotation_values :: T (PlotAnnotation x_a1432 y_a1433) [(x_a1432, y_a1433, String)]
- Graphics.Rendering.Chart.Plot.Annotation: plot_annotation_vanchor :: T (PlotAnnotation x_aQhq y_aQhr) VTextAnchor
+ Graphics.Rendering.Chart.Plot.Annotation: plot_annotation_vanchor :: T (PlotAnnotation x_a1432 y_a1433) VTextAnchor
- Graphics.Rendering.Chart.Plot.AreaSpots: area_spots_4d_linethick :: T (AreaSpots4D z_aQGX t_aQGY x_aQGZ y_aQH0) Double
+ Graphics.Rendering.Chart.Plot.AreaSpots: area_spots_4d_linethick :: T (AreaSpots4D z_a14BC t_a14BD x_a14BE y_a14BF) Double
- Graphics.Rendering.Chart.Plot.AreaSpots: area_spots_4d_max_radius :: T (AreaSpots4D z_aQGX t_aQGY x_aQGZ y_aQH0) Double
+ Graphics.Rendering.Chart.Plot.AreaSpots: area_spots_4d_max_radius :: T (AreaSpots4D z_a14BC t_a14BD x_a14BE y_a14BF) Double
- Graphics.Rendering.Chart.Plot.AreaSpots: area_spots_4d_palette :: T (AreaSpots4D z_aQGX t_aQGY x_aQGZ y_aQH0) [Colour Double]
+ Graphics.Rendering.Chart.Plot.AreaSpots: area_spots_4d_palette :: T (AreaSpots4D z_a14BC t_a14BD x_a14BE y_a14BF) [Colour Double]
- Graphics.Rendering.Chart.Plot.AreaSpots: area_spots_4d_title :: T (AreaSpots4D z_aQGX t_aQGY x_aQGZ y_aQH0) String
+ Graphics.Rendering.Chart.Plot.AreaSpots: area_spots_4d_title :: T (AreaSpots4D z_a14BC t_a14BD x_a14BE y_a14BF) String
- Graphics.Rendering.Chart.Plot.AreaSpots: area_spots_4d_values :: T (AreaSpots4D z_aQGX t_aQGY x_aQGZ y_aQH0) [(x_aQGZ, y_aQH0, z_aQGX, t_aQGY)]
+ Graphics.Rendering.Chart.Plot.AreaSpots: area_spots_4d_values :: T (AreaSpots4D z_a14BC t_a14BD x_a14BE y_a14BF) [(x_a14BE, y_a14BF, z_a14BC, t_a14BD)]
- Graphics.Rendering.Chart.Plot.AreaSpots: area_spots_fillcolour :: T (AreaSpots z_aQH1 x_aQH2 y_aQH3) (Colour Double)
+ Graphics.Rendering.Chart.Plot.AreaSpots: area_spots_fillcolour :: T (AreaSpots z_a14BG x_a14BH y_a14BI) (Colour Double)
- Graphics.Rendering.Chart.Plot.AreaSpots: area_spots_linecolour :: T (AreaSpots z_aQH1 x_aQH2 y_aQH3) (AlphaColour Double)
+ Graphics.Rendering.Chart.Plot.AreaSpots: area_spots_linecolour :: T (AreaSpots z_a14BG x_a14BH y_a14BI) (AlphaColour Double)
- Graphics.Rendering.Chart.Plot.AreaSpots: area_spots_linethick :: T (AreaSpots z_aQH1 x_aQH2 y_aQH3) Double
+ Graphics.Rendering.Chart.Plot.AreaSpots: area_spots_linethick :: T (AreaSpots z_a14BG x_a14BH y_a14BI) Double
- Graphics.Rendering.Chart.Plot.AreaSpots: area_spots_max_radius :: T (AreaSpots z_aQH1 x_aQH2 y_aQH3) Double
+ Graphics.Rendering.Chart.Plot.AreaSpots: area_spots_max_radius :: T (AreaSpots z_a14BG x_a14BH y_a14BI) Double
- Graphics.Rendering.Chart.Plot.AreaSpots: area_spots_title :: T (AreaSpots z_aQH1 x_aQH2 y_aQH3) String
+ Graphics.Rendering.Chart.Plot.AreaSpots: area_spots_title :: T (AreaSpots z_a14BG x_a14BH y_a14BI) String
- Graphics.Rendering.Chart.Plot.AreaSpots: area_spots_values :: T (AreaSpots z_aQH1 x_aQH2 y_aQH3) [(x_aQH2, y_aQH3, z_aQH1)]
+ Graphics.Rendering.Chart.Plot.AreaSpots: area_spots_values :: T (AreaSpots z_a14BG x_a14BH y_a14BI) [(x_a14BH, y_a14BI, z_a14BG)]
- Graphics.Rendering.Chart.Plot.Bars: plot_bars_alignment :: T (PlotBars x_aNLj y_aNLk) PlotBarsAlignment
+ Graphics.Rendering.Chart.Plot.Bars: plot_bars_alignment :: T (PlotBars x_a10Ug y_a10Uh) PlotBarsAlignment
- Graphics.Rendering.Chart.Plot.Bars: plot_bars_item_styles :: T (PlotBars x_aNLj y_aNLk) [(CairoFillStyle, Maybe CairoLineStyle)]
+ Graphics.Rendering.Chart.Plot.Bars: plot_bars_item_styles :: T (PlotBars x_a10Ug y_a10Uh) [(CairoFillStyle, Maybe CairoLineStyle)]
- Graphics.Rendering.Chart.Plot.Bars: plot_bars_reference :: T (PlotBars x_aNLj y_aNLk) y_aNLk
+ Graphics.Rendering.Chart.Plot.Bars: plot_bars_reference :: T (PlotBars x_a10Ug y_a10Uh) y_a10Uh
- Graphics.Rendering.Chart.Plot.Bars: plot_bars_singleton_width :: T (PlotBars x_aNLj y_aNLk) Double
+ Graphics.Rendering.Chart.Plot.Bars: plot_bars_singleton_width :: T (PlotBars x_a10Ug y_a10Uh) Double
- Graphics.Rendering.Chart.Plot.Bars: plot_bars_spacing :: T (PlotBars x_aNLj y_aNLk) PlotBarsSpacing
+ Graphics.Rendering.Chart.Plot.Bars: plot_bars_spacing :: T (PlotBars x_a10Ug y_a10Uh) PlotBarsSpacing
- Graphics.Rendering.Chart.Plot.Bars: plot_bars_style :: T (PlotBars x_aNLj y_aNLk) PlotBarsStyle
+ Graphics.Rendering.Chart.Plot.Bars: plot_bars_style :: T (PlotBars x_a10Ug y_a10Uh) PlotBarsStyle
- Graphics.Rendering.Chart.Plot.Bars: plot_bars_titles :: T (PlotBars x_aNLj y_aNLk) [String]
+ Graphics.Rendering.Chart.Plot.Bars: plot_bars_titles :: T (PlotBars x_a10Ug y_a10Uh) [String]
- Graphics.Rendering.Chart.Plot.Bars: plot_bars_values :: T (PlotBars x_aNLj y_aNLk) [(x_aNLj, [y_aNLk])]
+ Graphics.Rendering.Chart.Plot.Bars: plot_bars_values :: T (PlotBars x_a10Ug y_a10Uh) [(x_a10Ug, [y_a10Uh])]
- Graphics.Rendering.Chart.Plot.Candle: plot_candle_centre :: T (PlotCandle x_aLzN y_aLzO) Double
+ Graphics.Rendering.Chart.Plot.Candle: plot_candle_centre :: T (PlotCandle x_aXHH y_aXHI) Double
- Graphics.Rendering.Chart.Plot.Candle: plot_candle_fall_fill_style :: T (PlotCandle x_aLzN y_aLzO) CairoFillStyle
+ Graphics.Rendering.Chart.Plot.Candle: plot_candle_fall_fill_style :: T (PlotCandle x_aXHH y_aXHI) CairoFillStyle
- Graphics.Rendering.Chart.Plot.Candle: plot_candle_fill :: T (PlotCandle x_aLzN y_aLzO) Bool
+ Graphics.Rendering.Chart.Plot.Candle: plot_candle_fill :: T (PlotCandle x_aXHH y_aXHI) Bool
- Graphics.Rendering.Chart.Plot.Candle: plot_candle_line_style :: T (PlotCandle x_aLzN y_aLzO) CairoLineStyle
+ Graphics.Rendering.Chart.Plot.Candle: plot_candle_line_style :: T (PlotCandle x_aXHH y_aXHI) CairoLineStyle
- Graphics.Rendering.Chart.Plot.Candle: plot_candle_rise_fill_style :: T (PlotCandle x_aLzN y_aLzO) CairoFillStyle
+ Graphics.Rendering.Chart.Plot.Candle: plot_candle_rise_fill_style :: T (PlotCandle x_aXHH y_aXHI) CairoFillStyle
- Graphics.Rendering.Chart.Plot.Candle: plot_candle_tick_length :: T (PlotCandle x_aLzN y_aLzO) Double
+ Graphics.Rendering.Chart.Plot.Candle: plot_candle_tick_length :: T (PlotCandle x_aXHH y_aXHI) Double
- Graphics.Rendering.Chart.Plot.Candle: plot_candle_title :: T (PlotCandle x_aLzN y_aLzO) String
+ Graphics.Rendering.Chart.Plot.Candle: plot_candle_title :: T (PlotCandle x_aXHH y_aXHI) String
- Graphics.Rendering.Chart.Plot.Candle: plot_candle_values :: T (PlotCandle x_aLzN y_aLzO) [Candle x_aLzN y_aLzO]
+ Graphics.Rendering.Chart.Plot.Candle: plot_candle_values :: T (PlotCandle x_aXHH y_aXHI) [Candle x_aXHH y_aXHI]
- Graphics.Rendering.Chart.Plot.Candle: plot_candle_width :: T (PlotCandle x_aLzN y_aLzO) Double
+ Graphics.Rendering.Chart.Plot.Candle: plot_candle_width :: T (PlotCandle x_aXHH y_aXHI) Double
- Graphics.Rendering.Chart.Plot.ErrBars: plot_errbars_line_style :: T (PlotErrBars x_aJVZ y_aJW0) CairoLineStyle
+ Graphics.Rendering.Chart.Plot.ErrBars: plot_errbars_line_style :: T (PlotErrBars x_aVhe y_aVhf) CairoLineStyle
- Graphics.Rendering.Chart.Plot.ErrBars: plot_errbars_overhang :: T (PlotErrBars x_aJVZ y_aJW0) Double
+ Graphics.Rendering.Chart.Plot.ErrBars: plot_errbars_overhang :: T (PlotErrBars x_aVhe y_aVhf) Double
- Graphics.Rendering.Chart.Plot.ErrBars: plot_errbars_tick_length :: T (PlotErrBars x_aJVZ y_aJW0) Double
+ Graphics.Rendering.Chart.Plot.ErrBars: plot_errbars_tick_length :: T (PlotErrBars x_aVhe y_aVhf) Double
- Graphics.Rendering.Chart.Plot.ErrBars: plot_errbars_title :: T (PlotErrBars x_aJVZ y_aJW0) String
+ Graphics.Rendering.Chart.Plot.ErrBars: plot_errbars_title :: T (PlotErrBars x_aVhe y_aVhf) String
- Graphics.Rendering.Chart.Plot.ErrBars: plot_errbars_values :: T (PlotErrBars x_aJVZ y_aJW0) [ErrPoint x_aJVZ y_aJW0]
+ Graphics.Rendering.Chart.Plot.ErrBars: plot_errbars_values :: T (PlotErrBars x_aVhe y_aVhf) [ErrPoint x_aVhe y_aVhf]
- Graphics.Rendering.Chart.Plot.FillBetween: plot_fillbetween_style :: T (PlotFillBetween x_aJp6 y_aJp7) CairoFillStyle
+ Graphics.Rendering.Chart.Plot.FillBetween: plot_fillbetween_style :: T (PlotFillBetween x_aUsS y_aUsT) CairoFillStyle
- Graphics.Rendering.Chart.Plot.FillBetween: plot_fillbetween_title :: T (PlotFillBetween x_aJp6 y_aJp7) String
+ Graphics.Rendering.Chart.Plot.FillBetween: plot_fillbetween_title :: T (PlotFillBetween x_aUsS y_aUsT) String
- Graphics.Rendering.Chart.Plot.FillBetween: plot_fillbetween_values :: T (PlotFillBetween x_aJp6 y_aJp7) [(x_aJp6, (y_aJp7, y_aJp7))]
+ Graphics.Rendering.Chart.Plot.FillBetween: plot_fillbetween_values :: T (PlotFillBetween x_aUsS y_aUsT) [(x_aUsS, (y_aUsT, y_aUsT))]
- Graphics.Rendering.Chart.Plot.Lines: plot_lines_limit_values :: T (PlotLines x_aIjr y_aIjs) [[(Limit x_aIjr, Limit y_aIjs)]]
+ Graphics.Rendering.Chart.Plot.Lines: plot_lines_limit_values :: T (PlotLines x_aSXT y_aSXU) [[(Limit x_aSXT, Limit y_aSXU)]]
- Graphics.Rendering.Chart.Plot.Lines: plot_lines_style :: T (PlotLines x_aIjr y_aIjs) CairoLineStyle
+ Graphics.Rendering.Chart.Plot.Lines: plot_lines_style :: T (PlotLines x_aSXT y_aSXU) CairoLineStyle
- Graphics.Rendering.Chart.Plot.Lines: plot_lines_title :: T (PlotLines x_aIjr y_aIjs) String
+ Graphics.Rendering.Chart.Plot.Lines: plot_lines_title :: T (PlotLines x_aSXT y_aSXU) String
- Graphics.Rendering.Chart.Plot.Lines: plot_lines_values :: T (PlotLines x_aIjr y_aIjs) [[(x_aIjr, y_aIjs)]]
+ Graphics.Rendering.Chart.Plot.Lines: plot_lines_values :: T (PlotLines x_aSXT y_aSXU) [[(x_aSXT, y_aSXU)]]
- Graphics.Rendering.Chart.Plot.Points: plot_points_style :: T (PlotPoints x_aIYF y_aIYG) CairoPointStyle
+ Graphics.Rendering.Chart.Plot.Points: plot_points_style :: T (PlotPoints x_aTRn y_aTRo) CairoPointStyle
- Graphics.Rendering.Chart.Plot.Points: plot_points_title :: T (PlotPoints x_aIYF y_aIYG) String
+ Graphics.Rendering.Chart.Plot.Points: plot_points_title :: T (PlotPoints x_aTRn y_aTRo) String
- Graphics.Rendering.Chart.Plot.Points: plot_points_values :: T (PlotPoints x_aIYF y_aIYG) [(x_aIYF, y_aIYG)]
+ Graphics.Rendering.Chart.Plot.Points: plot_points_values :: T (PlotPoints x_aTRn y_aTRo) [(x_aTRn, y_aTRo)]
- Graphics.Rendering.Chart.Plot.Types: plot_all_points :: T (Plot x_aHkT y_aHkU) ([x_aHkT], [y_aHkU])
+ Graphics.Rendering.Chart.Plot.Types: plot_all_points :: T (Plot x_aRE0 y_aRE1) ([x_aRE0], [y_aRE1])
- Graphics.Rendering.Chart.Plot.Types: plot_legend :: T (Plot x_aHkT y_aHkU) [(String, Rect -> CRender ())]
+ Graphics.Rendering.Chart.Plot.Types: plot_legend :: T (Plot x_aRE0 y_aRE1) [(String, Rect -> CRender ())]
- Graphics.Rendering.Chart.Plot.Types: plot_render :: T (Plot x_aHkT y_aHkU) (PointMapFn x_aHkT y_aHkU -> CRender ())
+ Graphics.Rendering.Chart.Plot.Types: plot_render :: T (Plot x_aRE0 y_aRE1) (PointMapFn x_aRE0 y_aRE1 -> CRender ())
Files
- Chart.cabal +6/−2
- Graphics/Rendering/Chart/Grid.hs +13/−14
- Graphics/Rendering/Chart/Layout.hs +111/−57
- tests/all_tests.hs +28/−10
Chart.cabal view
@@ -1,11 +1,11 @@ Name: Chart-Version: 0.16+Version: 0.17 License: BSD3 License-file: LICENSE Copyright: Tim Docker, 2006-2010 Author: Tim Docker <tim@dockerz.net> Maintainer: Tim Docker <tim@dockerz.net>-Homepage: http://www.dockerz.net/software/chart.html+Homepage: https://github.com/timbod7/haskell-chart/wiki Synopsis: A library for generating 2D Charts and Plots Description: A library for generating 2D Charts and Plots, based upon the cairo graphics library. Category: Graphics@@ -71,3 +71,7 @@ Graphics.Rendering.Chart.Plot.Pie, Graphics.Rendering.Chart.Plot.Points Graphics.Rendering.Chart.SparkLine++source-repository head+ type: git+ location: https://github.com/timbod7/haskell-chart
Graphics/Rendering/Chart/Grid.hs view
@@ -18,10 +18,10 @@ width, height, gridToRenderable, weights,- fullRowAbove,- fullRowBelow,- fullColLeft,- fullColRight,+ aboveWide,+ wideAbove,+ tallBeside,+ besideTall, fullOverlayUnder, fullOverlayOver ) where@@ -101,25 +101,24 @@ above t1 t2 = Above t1 t2 size where size = (max (width t1) (width t2), height t1 + height t2) --- | A value placed above the grid, occupying 1 row with the same--- horizontal span as the grid.-fullRowAbove :: a -> Double -> Grid a -> Grid a-fullRowAbove a w g = (weights (0,w) $ tspan a (width g,1)) `above` g+-- | A value occupying 1 row with the same horizontal span as the grid.+wideAbove :: a -> Grid a -> Grid a+wideAbove a g = (weights (0,0) $ tspan a (width g,1)) `above` g -- | A value placed below the grid, occupying 1 row with the same -- horizontal span as the grid.-fullRowBelow :: a -> Double -> Grid a -> Grid a-fullRowBelow a w g = g `above` (weights (0,w) $ tspan a (width g,1))+aboveWide :: Grid a -> a -> Grid a+aboveWide g a = g `above` (weights (0,0) $ tspan a (width g,1)) -- | A value placed to the left of the grid, occupying 1 column with -- the same vertical span as the grid.-fullColLeft :: a -> Double -> Grid a -> Grid a-fullColLeft a w g = (weights (w,0) $ tspan a (1,height g)) `beside` g+tallBeside :: a -> Grid a -> Grid a+tallBeside a g = (weights (0,0) $ tspan a (1,height g)) `beside` g -- | A value placed to the right of the grid, occupying 1 column with -- the same vertical span as the grid.-fullColRight :: a -> Double -> Grid a -> Grid a-fullColRight a w g = g `beside` (weights (w,0) $ tspan a (1,height g))+besideTall :: Grid a -> a -> Grid a+besideTall g a = g `beside` (weights (0,0) $ tspan a (1,height g)) -- | A value placed under a grid, with the same span as the grid. fullOverlayUnder :: a -> Grid a -> Grid a
Graphics/Rendering/Chart/Layout.hs view
@@ -11,6 +11,8 @@ -- (see 'Data.Accessor') for each field of the following data types: -- -- * 'Layout1'+-- +-- * 'StackedLayouts' -- -- * 'LayoutAxis' --@@ -23,12 +25,14 @@ -- @ -- -{-# OPTIONS_GHC -XTemplateHaskell #-}+{-# OPTIONS_GHC -XTemplateHaskell -XExistentialQuantification #-} module Graphics.Rendering.Chart.Layout( Layout1(..), LayoutAxis(..), Layout1Pick(..),+ StackedLayouts(..),+ StackedLayout(..), MAxisFn, defaultLayout1,@@ -62,9 +66,12 @@ layout1_legend, layout1_grid_last, - renderLayout1sStacked,- AnyLayout1(),- withAnyOrdinate+ defaultStackedLayouts,+ slayouts_layouts,+ slayouts_compress_xlabels,+ slayouts_compress_legend,++ renderStackedLayouts, ) where import qualified Graphics.Rendering.Cairo as C@@ -154,43 +161,76 @@ instance (Ord x, Ord y) => ToRenderable (Layout1 x y) where toRenderable = setPickFn nullPickFn.layout1ToRenderable --- | Encapsulates a 'Layout1' with a fixed abscissa type but--- arbitrary ordinate type.-data AnyLayout1 x = AnyLayout1 {- background :: CairoFillStyle,- titleRenderable :: Renderable (),- plotAreaGrid :: Grid (Renderable ()),- legendRenderable :: Renderable (),- margin :: Double- }+type LegendItem = (String,Rect -> CRender ()) -withAnyOrdinate :: (Ord x,Ord y) => Layout1 x y -> AnyLayout1 x-withAnyOrdinate l = AnyLayout1 {- background = layout1_background_ l,- titleRenderable = mapPickFn (const ()) $ layout1TitleToRenderable l,- plotAreaGrid = fmap (mapPickFn (const ())) $ layout1PlotAreaToGrid l,- legendRenderable = mapPickFn (const ()) $ layout1LegendsToRenderable l,- margin = layout1_margin_ l- }+-- | A layout with it's y type hidded, so that it can be stacked+-- with other layouts (with differing y types)+data StackedLayout x = forall y . Ord y => StackedLayout (Layout1 x y) +-- | A holder for a set of vertically stacked layouts+data StackedLayouts x = StackedLayouts {+ slayouts_layouts_ :: [StackedLayout x],+ slayouts_compress_xlabels_ :: Bool,+ slayouts_compress_legend_ :: Bool+} --- | Render several layouts with the same abscissa type stacked so that their--- origins and axis titles are aligned horizontally with respect to each--- other. The exterior margins and background are taken from the first--- element.-renderLayout1sStacked :: (Ord x) => [AnyLayout1 x] -> Renderable ()-renderLayout1sStacked [] = emptyRenderable-renderLayout1sStacked ls@(l1:_) = gridToRenderable g+defaultStackedLayouts :: StackedLayouts x+defaultStackedLayouts = StackedLayouts [] True True++-- | Render several layouts with the same x-axis type and range,+-- vertically stacked so that their origins and x-values are aligned.+--+-- The legends from all the charts may be optionally combined, and shown+-- once on the bottom chart. The x labels may be optionally removed so that+-- they are only shown once.+renderStackedLayouts :: (Ord x) => StackedLayouts x -> Renderable ()+renderStackedLayouts (StackedLayouts{slayouts_layouts_=[]}) = emptyRenderable+renderStackedLayouts slp@(StackedLayouts{slayouts_layouts_=sls@(sl1:_)}) = gridToRenderable g where- g = fullOverlayUnder (fillBackground (background l1) emptyRenderable)- $ addMarginsToGrid (lm,lm,lm,lm)- $ aboveN [ fullRowAbove (titleRenderable l) 0 (- fullRowBelow (legendRenderable l) 0- (plotAreaGrid l))- | l <- ls ]+ g = fullOverlayUnder (fillBackground bg emptyRenderable)+ $ foldr (above.mkGrid) nullt (zip sls [0,1..])+ + mkGrid ((StackedLayout l),i)+ = (noPickFn $ layout1TitleToRenderable l)+ `wideAbove`+ (addMarginsToGrid (lm,lm,lm,lm) $ mkPlotArea baxis taxis)+ `aboveWide`+ (if showLegend then noPickFn $ renderLegend l legenditems else emptyRenderable) - lm = margin l1+ where+ legenditems = case (slayouts_compress_legend_ slp,isBottomPlot) of+ (False,_) -> getLegendItems l+ (True,True) -> alllegendItems+ (True,False) -> ([],[]) + mkPlotArea bx tx = fmap (mapPickFn (const ()))+ $ layout1PlotAreaToGrid l{layout1_bottom_axis_=bx,layout1_top_axis_=tx}++ showLegend = not (null (fst legenditems)) || not (null (snd legenditems))++ isTopPlot = i == 0+ isBottomPlot = i == length sls -1++ lm = layout1_margin_ l++ baxis = mkAxis (layout1_bottom_axis_ l) (isBottomPlot || not (slayouts_compress_xlabels_ slp))+ taxis = mkAxis (layout1_top_axis_ l) (isTopPlot || not (slayouts_compress_xlabels_ slp))++ mkAxis a showLabels = a{+ laxis_generate_=const (laxis_generate_ a all_xvals),+ laxis_override_= if showLabels then id else \ad -> ad{axis_labels_=[]}+ }++ bg = (\(StackedLayout l) -> layout1_background_ l) sl1+ + all_xvals = concatMap (\(StackedLayout l) -> getLayout1XVals l) sls++ alllegendItems = (concatMap (fst.legendItems) sls, concatMap (snd.legendItems) sls)+ legendItems (StackedLayout l) = (getLegendItems l)+ + noPickFn :: Renderable a -> Renderable ()+ noPickFn = mapPickFn (const ())+ addMarginsToGrid :: (Double,Double,Double,Double) -> Grid (Renderable a) -> Grid (Renderable a) addMarginsToGrid (t,b,l,r) g = aboveN [@@ -231,15 +271,25 @@ (layout1_title_ l) lm = layout1_margin_ l -layout1LegendsToRenderable :: (Ord x, Ord y) =>- Layout1 x y -> Renderable (Layout1Pick x y)-layout1LegendsToRenderable l = gridToRenderable g+getLayout1XVals :: Layout1 x y -> [x]+getLayout1XVals l = concatMap (fst.plot_all_points_.deEither) (layout1_plots_ l) where+ deEither (Left x) = x+ deEither (Right x) = x+++getLegendItems :: Layout1 x y -> ([LegendItem],[LegendItem])+getLegendItems l = (+ concat [ plot_legend_ p | (Left p ) <- (layout1_plots_ l) ],+ concat [ plot_legend_ p | (Right p) <- (layout1_plots_ l) ]+ )++renderLegend :: Layout1 x y -> ([LegendItem],[LegendItem]) -> Renderable (Layout1Pick x y)+renderLegend l (lefts,rights) = gridToRenderable g+ where g = besideN [ tval $ mkLegend lefts , weights (1,1) $ tval $ emptyRenderable , tval $ mkLegend rights ]- lefts = concat [ plot_legend_ p | (Left p ) <- (layout1_plots_ l) ]- rights = concat [ plot_legend_ p | (Right p) <- (layout1_plots_ l) ] lm = layout1_margin_ l @@ -248,38 +298,41 @@ Just ls -> case filter ((/="").fst) vals of [] -> emptyRenderable ; lvs -> addMargins (0,lm,lm,lm) $- mapPickFn L1P_Legend $- legendToRenderable (Legend ls lvs)+ mapPickFn L1P_Legend $ legendToRenderable (Legend ls lvs) +layout1LegendsToRenderable :: (Ord x, Ord y) =>+ Layout1 x y -> Renderable (Layout1Pick x y)+layout1LegendsToRenderable l = renderLegend l (getLegendItems l)+ layout1PlotAreaToGrid :: (Ord x, Ord y) => Layout1 x y -> Grid (Renderable (Layout1Pick x y)) layout1PlotAreaToGrid l = layer2 `overlay` layer1 where layer1 = aboveN- [ besideN [er, er, er ]- , besideN [er, er, er ]- , besideN [er, er, weights (1,1) plots ]+ [ besideN [er, er, er, er ]+ , besideN [er, er, er, er ]+ , besideN [er, er, er, weights (1,1) plots ] ] layer2 = aboveN- [ besideN [er, er, ttitle, er, er ]- , besideN [er, tl, taxis, tr, er ]- , besideN [ltitle, laxis, er, raxis, rtitle ]- , besideN [er, bl, baxis, br, er ]- , besideN [er, er, btitle, er, er ]+ [ besideN [er, er, er, ttitle, er, er, er ]+ , besideN [er, er, tl, taxis, tr, er, er ]+ , besideN [ltitle, lam, laxis, er, raxis, ram, rtitle ]+ , besideN [er, er, bl, baxis, br, er, er ]+ , besideN [er, er, er, btitle, er, er, er ] ] - ttitle = atitle HTA_Centre VTA_Bottom 0 layout1_top_axis_ L1P_TopAxisTitle- btitle = atitle HTA_Centre VTA_Top 0 layout1_bottom_axis_ L1P_BottomAxisTitle- ltitle = atitle HTA_Right VTA_Centre 270 layout1_left_axis_ L1P_LeftAxisTitle- rtitle = atitle HTA_Left VTA_Centre 270 layout1_right_axis_ L1P_RightAxisTitle+ (ttitle,_) = atitle HTA_Centre VTA_Bottom 0 layout1_top_axis_ L1P_TopAxisTitle+ (btitle,_) = atitle HTA_Centre VTA_Top 0 layout1_bottom_axis_ L1P_BottomAxisTitle+ (ltitle,lam) = atitle HTA_Right VTA_Centre 270 layout1_left_axis_ L1P_LeftAxisTitle+ (rtitle,ram) = atitle HTA_Left VTA_Centre 270 layout1_right_axis_ L1P_RightAxisTitle er = tval $ emptyRenderable - atitle ha va rot af pf = if ttext == "" then er- else tval $ mapPickFn pf- $ rlabel tstyle ha va rot ttext+ atitle ha va rot af pf = if ttext == "" then (er,er) else (label,gap) where+ label = tval $ mapPickFn pf $ rlabel tstyle ha va rot ttext+ gap = tval $ spacer (layout1_margin_ l,0) tstyle = laxis_title_style_ (af l) ttext = laxis_title_ (af l) @@ -438,6 +491,7 @@ -- for each field. $( deriveAccessors ''Layout1 ) $( deriveAccessors ''LayoutAxis )+$( deriveAccessors ''StackedLayouts ) -- | Helper to update all axis styles on a Layout1 simultaneously. updateAllAxesStyles :: (AxisStyle -> AxisStyle) -> Layout1 x y -> Layout1 x y
tests/all_tests.hs view
@@ -216,8 +216,7 @@ ------------------------------------------------------------------------------- -- A quick test of stacked layouts -test11 :: OutputType -> Renderable ()-test11 otype = renderLayout1sStacked [withAnyOrdinate layout1, withAnyOrdinate layout2]+test11_ f = f layout1 layout2 where vs1 :: [(Int,Int)] vs1 = [ (2,2), (3,40), (8,400), (12,60) ]@@ -225,24 +224,42 @@ vs2 :: [(Int,Double)] vs2 = [ (0,0.7), (3,0.35), (4,0.25), (7, 0.6), (10,0.4) ] - allx = map fst vs1 ++ map fst vs2- extendRange = PlotHidden allx []- plot1 = plot_points_style ^= filledCircles 5 (opaque red) $ plot_points_values ^= vs1+ $ plot_points_title ^= "spots" $ defaultPlotPoints - layout1 = layout1_title ^= "Integer Axis"- $ layout1_plots ^= [Left (toPlot plot1), Left (toPlot extendRange)]+ layout1 = layout1_title ^= "Multi typed stack"+ $ layout1_plots ^= [Left (toPlot plot1)]+ $ layout1_left_axis ^: laxis_title ^= "integer values" $ defaultLayout1 plot2 = plot_lines_values ^= [vs2]+ $ plot_lines_title ^= "lines" $ defaultPlotLines - layout2 = layout1_title ^= "Float Axis"- $ layout1_plots ^= [Left (toPlot plot2), Left (toPlot extendRange)]+ layout2 = layout1_plots ^= [Left (toPlot plot2)]+ $ layout1_left_axis ^: laxis_title ^= "double values" $ defaultLayout1 +test11a :: OutputType -> Renderable ()+test11a otype = test11_ f+ where+ f l1 l2 = renderStackedLayouts + $ slayouts_layouts ^= [StackedLayout l1, StackedLayout l2]+ $ slayouts_compress_xlabels ^= False+ $ slayouts_compress_legend ^= False+ $ defaultStackedLayouts+ +test11b :: OutputType -> Renderable ()+test11b otype = test11_ f+ where+ f l1 l2 = renderStackedLayouts + $ slayouts_layouts ^= [StackedLayout l1, StackedLayout l2]+ $ slayouts_compress_xlabels ^= True+ $ slayouts_compress_legend ^= True+ $ defaultStackedLayouts+ ------------------------------------------------------------------------------- -- More of an example that a test: -- configuring axes explicitly configured axes@@ -371,7 +388,8 @@ , ("test9l", stdSize, test9 BarsLeft) , ("test9r", stdSize, test9 BarsRight) , ("test10", stdSize, test10 prices1)- , ("test11", stdSize, test11)+ , ("test11a", stdSize, test11a)+ , ("test11b", stdSize, test11b) , ("test12", stdSize, test12) , ("test13", stdSize, test13) , ("test14", stdSize, \o -> Test14.chart (chooseLineWidth o) )