Copyright | (C) 2015-2017 Christopher Chalmers |
---|---|
License | BSD-style (see the file LICENSE) |
Maintainer | Christopher Chalmers |
Stability | experimental |
Portability | non-portable |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
There are two kinds of labels this module deals with: The AxisLabel
labels are placed next to an axis line. The TickLabels
are the
numbers (usually) next to each major tick on an axis line.
Synopsis
- class HasAxisLabel f a b | a -> b where
- axisLabel :: LensLike' f a (AxisLabel b (V a) (N a))
- axisLabelText :: Functor f => LensLike' f a String
- axisLabelTextFunction :: Functor f => LensLike' f a (TextFunction b (V a) (N a))
- axisLabelGap :: Functor f => LensLike' f a (N a)
- axisLabelStyle :: Functor f => LensLike' f a (Style (V a) (N a))
- axisLabelPosition :: Functor f => LensLike' f a AxisLabelPosition
- axisLabelPlacement :: Functor f => LensLike' f a AxisLabelPosition
- data AxisLabel b v n
- data AxisLabelPosition
- data AxisLabelPlacement
- data TickLabels b v n
- class HasTickLabels f a b | a -> b where
- tickLabel :: LensLike' f a (TickLabels b (V a) (N a))
- tickLabelTextFunction :: Functor f => LensLike' f a (TextFunction b (V a) (N a))
- tickLabelFunction :: Functor f => LensLike' f a ([N a] -> (N a, N a) -> [(N a, String)])
- tickLabelStyle :: Functor f => LensLike' f a (Style (V a) (N a))
- tickLabelGap :: Functor f => LensLike' f a (N a)
- tickLabelPositions :: (HasTickLabels f a b, Settable f) => LensLike' f a [(N a, String)]
- atMajorTicks :: (n -> String) -> [n] -> (n, n) -> [(n, String)]
- type TextFunction b v n = TextAlignment n -> String -> QDiagram b v n Any
Axis line labels
class HasAxisLabel f a b | a -> b where Source #
axisLabel :: LensLike' f a (AxisLabel b (V a) (N a)) Source #
The options for the label of the axis. This can be used on various levels of the axis:
axisLabel
::Traversal'
(Axis
b c n) (AxisLabel
(BaseSpace
c) n)axisLabel
::Lens'
(SingleAxis
b v n) (AxisLabel
v n)axisLabel
::Lens'
(AxisLabel
v n) (AxisLabel
v n)
axisLabelText :: Functor f => LensLike' f a String Source #
The text to use when labeling the axis.
axisLabelTextFunction :: Functor f => LensLike' f a (TextFunction b (V a) (N a)) Source #
The TextFunction
to render the text of the axis label.
axisLabelGap :: Functor f => LensLike' f a (N a) Source #
The gap between the axis and the labels, in the direction
corresponding to the axisLabelPosition
.
axisLabelStyle :: Functor f => LensLike' f a (Style (V a) (N a)) Source #
The Style
to use on the rendered text.
axisLabelPosition :: Functor f => LensLike' f a AxisLabelPosition Source #
The position the label will be placed parallel to the axis.
axisLabelPlacement :: Functor f => LensLike' f a AxisLabelPosition Source #
Whether the axis label should be placed inside or outside the axis.
Instances
AxisLabel
describes the label next to each axis line. They are
normally set with the xLabel
and yLabel
helper function:
myAxis = r2Axis &~ doxLabel
.= "time (s)"yLabel
.= "height (m)"
See HasAxisLabel
for more advanced settings.
Instances
data AxisLabelPosition Source #
The position of the AxisLabel
along the axis.
data AxisLabelPlacement Source #
Whether the AxisLabel
should be inside or outside the axis.
Axis tick labels
data TickLabels b v n Source #
TickLabels
describes how to draw the labels next to ticks. See
HasTickLabels
for more options.
Instances
class HasTickLabels f a b | a -> b where Source #
tickLabel :: LensLike' f a (TickLabels b (V a) (N a)) Source #
The options for the label of ticks. This can be used on various levels of the axis:
tickLabel
::Traversal'
(Tick
b c n) (TickLabels
(BaseSpace
c) n)tickLabel
::Lens'
(SingleAxis
b v n) (TickLabels
v n)tickLabel
::Lens'
(TickLabel
v n) (TickLabels
v n)
tickLabelTextFunction :: Functor f => LensLike' f a (TextFunction b (V a) (N a)) Source #
The TextFunction
to render the text.
tickLabelFunction :: Functor f => LensLike' f a ([N a] -> (N a, N a) -> [(N a, String)]) Source #
Tick labels functions are used to draw the tick labels. They have access to the major ticks and the current bounds. Returns the position of the tick and label to use at that position.
Default
is atMajorTicks
floatShow
tickLabelStyle :: Functor f => LensLike' f a (Style (V a) (N a)) Source #
tickLabelGap :: Functor f => LensLike' f a (N a) Source #
The gap between the axis and the tick labels.
Default
is 12
.
Instances
tickLabelPositions :: (HasTickLabels f a b, Settable f) => LensLike' f a [(N a, String)] Source #
Setter over the final positions the major ticks. This is not as
general as tickLabelFunction
because you don't have access to the
bounds but it can be useful when you know exactly what ticks you
want to add or modify existing tick positions or to add an extra
value:
xAxis . tickLabelPositions .= [(1, "apples"), (2, "oranges"), (3, "bananas"] yAxis . tickLabelPositions <>= [(1.5, "critial mass")]
If you want to change or add normal ticks see majorTicksFunction
.
atMajorTicks :: (n -> String) -> [n] -> (n, n) -> [(n, String)] Source #
Make a TickLabelFunction
by specifying how to draw a single label
from a position on the axis.
Misc
type TextFunction b v n = TextAlignment n -> String -> QDiagram b v n Any Source #
Function to render the axis label from a string. This is very basic now and will be replace by a more sophisticated system.