Chart-1.5.4: A library for generating 2D Charts and Plots

Copyright(c) Tim Docker 2006, 2014
LicenseBSD-style (see chart/COPYRIGHT)
Safe HaskellNone
LanguageHaskell98

Graphics.Rendering.Chart.Layout

Contents

Description

This module glues together axes and plots to actually create a renderable for a chart.

Note that Template haskell is used to derive accessor functions (see Lens) for each field of the following data types:

Synopsis

Types

data Layout x y

A Layout value is a single plot area, with single x and y axis. The title is at the top and the legend at the bottom. It's parametrized by the types of values to be plotted on the x and y axes.

Constructors

Layout 

Fields

_layout_background :: FillStyle

How to fill the background of everything.

_layout_plot_background :: Maybe FillStyle

How to fill the background of the plot, if different from the overall background.

_layout_title :: String

Title to display above the chart.

_layout_title_style :: FontStyle

Font style to use for the title.

_layout_x_axis :: LayoutAxis x

Rules to generate the x axis.

_layout_top_axis_visibility :: AxisVisibility

Visibility options for the top axis.

_layout_bottom_axis_visibility :: AxisVisibility

Visibility options for the bottom axis.

_layout_y_axis :: LayoutAxis y

Rules to generate the y axis.

_layout_left_axis_visibility :: AxisVisibility

Visibility options for the left axis.

_layout_right_axis_visibility :: AxisVisibility

Visibility options for the right axis.

_layout_plots :: [Plot x y]

The data sets to plot in the chart. The are ploted over each other.

_layout_legend :: Maybe LegendStyle

How to style the legend.

_layout_margin :: Double

The margin distance to use.

_layout_grid_last :: Bool

If the grid shall be rendered beneath (False) or over (True) all plots.

Instances

(PlotValue x, PlotValue y) => Default (Layout x y)

Empty Layout without title and plots. The background is white and the grid is drawn beneath all plots. There will be a legend. The top and right axis will not be visible.

(Ord x, Ord y) => ToRenderable (Layout x y) 

data LayoutLR x y1 y2

A LayoutLR value is a single plot area, with an x axis and independent left and right y axes, with a title at the top; legend at the bottom. It's parametrized by the types of values to be plotted on the x and two y axes.

Constructors

LayoutLR 

Fields

_layoutlr_background :: FillStyle

How to fill the background of everything.

_layoutlr_plot_background :: Maybe FillStyle

How to fill the background of the plot, if different from the overall background.

_layoutlr_title :: String

Title to display above the chart.

_layoutlr_title_style :: FontStyle

Font style to use for the title.

_layoutlr_x_axis :: LayoutAxis x

Rules to generate the x axis.

_layoutlr_top_axis_visibility :: AxisVisibility

Visibility options for the top axis.

_layoutlr_bottom_axis_visibility :: AxisVisibility

Visibility options for the bottom axis.

_layoutlr_left_axis :: LayoutAxis y1

Rules to generate the left y axis.

_layoutlr_left_axis_visibility :: AxisVisibility

Visibility options for the left axis.

_layoutlr_right_axis :: LayoutAxis y2

Rules to generate the right y axis.

_layoutlr_right_axis_visibility :: AxisVisibility

Visibility options for the right axis.

_layoutlr_plots :: [Either (Plot x y1) (Plot x y2)]

The data sets to plot in the chart. The are ploted over each other. The either type associates the plot with the left or right y axis.

_layoutlr_legend :: Maybe LegendStyle

How to style the legend.

_layoutlr_margin :: Double

The margin distance to use.

_layoutlr_grid_last :: Bool

If the grid shall be rendered beneath (False) or over (True) all plots.

Instances

(PlotValue x, PlotValue y1, PlotValue y2) => Default (LayoutLR x y1 y2)

Empty LayoutLR without title and plots. The background is white and the grid is drawn beneath all plots. There will be a legend. The top axis will not be visible.

(Ord x, Ord yl, Ord yr) => ToRenderable (LayoutLR x yl yr) 

data LayoutAxis x

Type of axis that is used in Layout and LayoutLR.

To generate the actual axis type (AxisData and AxisT) the _laxis_generate function is called and custom settings are applied with _laxis_override. Note that the AxisVisibility values in Layout and LayoutLR override visibility related settings of the axis.

Constructors

LayoutAxis 

Fields

_laxis_title_style :: FontStyle

Font style to use for the axis title.

_laxis_title :: String

Title displayed for the axis.

_laxis_style :: AxisStyle

Axis style applied.

_laxis_generate :: AxisFn x

Function that generates the axis data, based upon the points plotted. The default value is autoAxis.

_laxis_override :: AxisData x -> AxisData x

Function that can be used to override the generated axis data. The default value is id.

_laxis_reverse :: Bool

True if left to right (bottom to top) is to show descending values.

Instances

data LayoutPick x y1 y2

Information on what is at a specifc location of a Layout or LayoutLR. This is delivered by the PickFn of a Renderable.

Constructors

LayoutPick_Legend String

A legend entry.

LayoutPick_Title String

The title.

LayoutPick_XTopAxisTitle String

The title of the top x axis.

LayoutPick_XBottomAxisTitle String

The title of the bottom x axis.

LayoutPick_YLeftAxisTitle String

The title of the left y axis.

LayoutPick_YRightAxisTitle String

The title of the right y axis.

LayoutPick_PlotArea x y1 y2

The plot area at the given plot coordinates.

LayoutPick_XTopAxis x

The top x axis at the given plot coordinate.

LayoutPick_XBottomAxis x

The bottom x axis at the given plot coordinate.

LayoutPick_YLeftAxis y1

The left y axis at the given plot coordinate.

LayoutPick_YRightAxis y2

The right y axis at the given plot coordinate.

Instances

(Show x, Show y1, Show y2) => Show (LayoutPick x y1 y2) 

data StackedLayouts x

A container for a set of vertically StackedLayouts. The x axis of the different layouts will be aligned.

Constructors

StackedLayouts 

Fields

_slayouts_layouts :: [StackedLayout x]

The stacked layouts from top (first element) to bottom (last element).

_slayouts_compress_legend :: Bool

If the different legends shall be combined in one legend at the bottom.

Instances

Default (StackedLayouts x)

A empty StackedLayout with compressions applied.

Ord x => ToRenderable (StackedLayouts x) 

data StackedLayout x

A layout with its y type hidden, so that it can be stacked with other layouts with differing y axis, but the same x axis. See StackedLayouts.

Constructors

forall y . Ord y => StackedLayout (Layout x y)

A Layout to stack.

forall yl yr . (Ord yl, Ord yr) => StackedLayoutLR (LayoutLR x yl yr)

A LayoutLR to stack.

type MAxisFn t = [t] -> Maybe (AxisData t)

A MAxisFn is a function that generates an (optional) axis given the points plotted against that axis.

Rendering

layoutToRenderable :: forall x y. (Ord x, Ord y) => Layout x y -> Renderable (LayoutPick x y y)

Render the given Layout.

layoutLRToRenderable :: forall x yl yr. (Ord x, Ord yl, Ord yr) => LayoutLR x yl yr -> Renderable (LayoutPick x yl yr)

Render the given LayoutLR.

renderStackedLayouts :: forall x. Ord x => StackedLayouts x -> Renderable ()

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. See StackedLayouts for further information.

LayoutAxis lenses

laxis_generate :: forall x. Lens' (LayoutAxis x) (AxisFn x)

laxis_override :: forall x. Lens' (LayoutAxis x) (AxisData x -> AxisData x)

Layout lenses

layout_title :: forall x y. Lens' (Layout x y) String

layout_x_axis :: forall x y. Lens' (Layout x y) (LayoutAxis x)

layout_y_axis :: forall x y. Lens' (Layout x y) (LayoutAxis y)

layout_margin :: forall x y. Lens' (Layout x y) Double

layout_plots :: forall x y. Lens' (Layout x y) [Plot x y]

layout_legend :: forall x y. Lens' (Layout x y) (Maybe LegendStyle)

layout_grid_last :: forall x y. Lens' (Layout x y) Bool

layout_axes_styles :: Setter' (Layout x y) AxisStyle

Setter to update all axis styles on a Layout

layout_axes_title_styles :: Setter' (Layout x y) FontStyle

Setter to update all the axes title styles on a Layout

layout_all_font_styles :: Setter' (Layout x y) FontStyle

Setter to update all the font styles on a Layout

layout_foreground :: Setter' (Layout x y) (AlphaColour Double)

Setter to update the foreground color of core chart elements on a Layout

LayoutLR lenses

layoutlr_background :: forall x y1 y2. Lens' (LayoutLR x y1 y2) FillStyle

layoutlr_plot_background :: forall x y1 y2. Lens' (LayoutLR x y1 y2) (Maybe FillStyle)

layoutlr_title :: forall x y1 y2. Lens' (LayoutLR x y1 y2) String

layoutlr_title_style :: forall x y1 y2. Lens' (LayoutLR x y1 y2) FontStyle

layoutlr_x_axis :: forall x y1 y2. Lens' (LayoutLR x y1 y2) (LayoutAxis x)

layoutlr_left_axis :: forall x y1 y2. Lens' (LayoutLR x y1 y2) (LayoutAxis y1)

layoutlr_right_axis :: forall x y1 y2. Lens' (LayoutLR x y1 y2) (LayoutAxis y2)

layoutlr_plots :: forall x y1 y2. Lens' (LayoutLR x y1 y2) [Either (Plot x y1) (Plot x y2)]

layoutlr_legend :: forall x y1 y2. Lens' (LayoutLR x y1 y2) (Maybe LegendStyle)

layoutlr_margin :: forall x y1 y2. Lens' (LayoutLR x y1 y2) Double

layoutlr_grid_last :: forall x y1 y2. Lens' (LayoutLR x y1 y2) Bool

layoutlr_axes_styles :: Setter' (LayoutLR x y1 y2) AxisStyle

Setter to update all axis styles on a LayoutLR

layoutlr_axes_title_styles :: Setter' (LayoutLR x y1 y2) FontStyle

Setter to update all the axes title styles on a LayoutLR

layoutlr_all_font_styles :: Setter' (LayoutLR x y1 y2) FontStyle

Setter to update all the font styles on a LayoutLR

layoutlr_foreground :: Setter' (LayoutLR x y1 y2) (AlphaColour Double)

Setter to update the foreground color of core chart elements on a LayoutLR

StackedLayouts lenses