Copyright | (c) Matthew Sackman, Ivan Lazar Miljenovic |
---|---|
License | 3-Clause BSD-style |
Maintainer | Ivan.Miljenovic@gmail.com |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
There are almost 150 possible attributes available for Dot graphs, and it can be difficult to know which ones to use. This module provides helper functions for the most commonly used ones.
The complete list of all possible attributes can be found in Data.GraphViz.Attributes.Complete; it is possible to use both of these modules if you require specific extra attributes that are not provided here.
- data Attribute
- type Attributes = [Attribute]
- toLabel :: Labellable a => a -> Attribute
- textLabel :: Text -> Attribute
- xLabel :: Labellable a => a -> Attribute
- xTextLabel :: Text -> Attribute
- forceLabels :: Attribute
- textLabelValue :: Text -> Label
- class Labellable a where
- toLabelValue :: a -> Label
- data X11Color
- = AliceBlue
- | AntiqueWhite
- | AntiqueWhite1
- | AntiqueWhite2
- | AntiqueWhite3
- | AntiqueWhite4
- | Aquamarine
- | Aquamarine1
- | Aquamarine2
- | Aquamarine3
- | Aquamarine4
- | Azure
- | Azure1
- | Azure2
- | Azure3
- | Azure4
- | Beige
- | Bisque
- | Bisque1
- | Bisque2
- | Bisque3
- | Bisque4
- | Black
- | BlanchedAlmond
- | Blue
- | Blue1
- | Blue2
- | Blue3
- | Blue4
- | BlueViolet
- | Brown
- | Brown1
- | Brown2
- | Brown3
- | Brown4
- | Burlywood
- | Burlywood1
- | Burlywood2
- | Burlywood3
- | Burlywood4
- | CadetBlue
- | CadetBlue1
- | CadetBlue2
- | CadetBlue3
- | CadetBlue4
- | Chartreuse
- | Chartreuse1
- | Chartreuse2
- | Chartreuse3
- | Chartreuse4
- | Chocolate
- | Chocolate1
- | Chocolate2
- | Chocolate3
- | Chocolate4
- | Coral
- | Coral1
- | Coral2
- | Coral3
- | Coral4
- | CornFlowerBlue
- | CornSilk
- | CornSilk1
- | CornSilk2
- | CornSilk3
- | CornSilk4
- | Crimson
- | Cyan
- | Cyan1
- | Cyan2
- | Cyan3
- | Cyan4
- | DarkGoldenrod
- | DarkGoldenrod1
- | DarkGoldenrod2
- | DarkGoldenrod3
- | DarkGoldenrod4
- | DarkGreen
- | Darkkhaki
- | DarkOliveGreen
- | DarkOliveGreen1
- | DarkOliveGreen2
- | DarkOliveGreen3
- | DarkOliveGreen4
- | DarkOrange
- | DarkOrange1
- | DarkOrange2
- | DarkOrange3
- | DarkOrange4
- | DarkOrchid
- | DarkOrchid1
- | DarkOrchid2
- | DarkOrchid3
- | DarkOrchid4
- | DarkSalmon
- | DarkSeaGreen
- | DarkSeaGreen1
- | DarkSeaGreen2
- | DarkSeaGreen3
- | DarkSeaGreen4
- | DarkSlateBlue
- | DarkSlateGray
- | DarkSlateGray1
- | DarkSlateGray2
- | DarkSlateGray3
- | DarkSlateGray4
- | DarkTurquoise
- | DarkViolet
- | DeepPink
- | DeepPink1
- | DeepPink2
- | DeepPink3
- | DeepPink4
- | DeepSkyBlue
- | DeepSkyBlue1
- | DeepSkyBlue2
- | DeepSkyBlue3
- | DeepSkyBlue4
- | DimGray
- | DodgerBlue
- | DodgerBlue1
- | DodgerBlue2
- | DodgerBlue3
- | DodgerBlue4
- | Firebrick
- | Firebrick1
- | Firebrick2
- | Firebrick3
- | Firebrick4
- | FloralWhite
- | ForestGreen
- | Gainsboro
- | GhostWhite
- | Gold
- | Gold1
- | Gold2
- | Gold3
- | Gold4
- | Goldenrod
- | Goldenrod1
- | Goldenrod2
- | Goldenrod3
- | Goldenrod4
- | Gray
- | Gray0
- | Gray1
- | Gray2
- | Gray3
- | Gray4
- | Gray5
- | Gray6
- | Gray7
- | Gray8
- | Gray9
- | Gray10
- | Gray11
- | Gray12
- | Gray13
- | Gray14
- | Gray15
- | Gray16
- | Gray17
- | Gray18
- | Gray19
- | Gray20
- | Gray21
- | Gray22
- | Gray23
- | Gray24
- | Gray25
- | Gray26
- | Gray27
- | Gray28
- | Gray29
- | Gray30
- | Gray31
- | Gray32
- | Gray33
- | Gray34
- | Gray35
- | Gray36
- | Gray37
- | Gray38
- | Gray39
- | Gray40
- | Gray41
- | Gray42
- | Gray43
- | Gray44
- | Gray45
- | Gray46
- | Gray47
- | Gray48
- | Gray49
- | Gray50
- | Gray51
- | Gray52
- | Gray53
- | Gray54
- | Gray55
- | Gray56
- | Gray57
- | Gray58
- | Gray59
- | Gray60
- | Gray61
- | Gray62
- | Gray63
- | Gray64
- | Gray65
- | Gray66
- | Gray67
- | Gray68
- | Gray69
- | Gray70
- | Gray71
- | Gray72
- | Gray73
- | Gray74
- | Gray75
- | Gray76
- | Gray77
- | Gray78
- | Gray79
- | Gray80
- | Gray81
- | Gray82
- | Gray83
- | Gray84
- | Gray85
- | Gray86
- | Gray87
- | Gray88
- | Gray89
- | Gray90
- | Gray91
- | Gray92
- | Gray93
- | Gray94
- | Gray95
- | Gray96
- | Gray97
- | Gray98
- | Gray99
- | Gray100
- | Green
- | Green1
- | Green2
- | Green3
- | Green4
- | GreenYellow
- | HoneyDew
- | HoneyDew1
- | HoneyDew2
- | HoneyDew3
- | HoneyDew4
- | HotPink
- | HotPink1
- | HotPink2
- | HotPink3
- | HotPink4
- | IndianRed
- | IndianRed1
- | IndianRed2
- | IndianRed3
- | IndianRed4
- | Indigo
- | Ivory
- | Ivory1
- | Ivory2
- | Ivory3
- | Ivory4
- | Khaki
- | Khaki1
- | Khaki2
- | Khaki3
- | Khaki4
- | Lavender
- | LavenderBlush
- | LavenderBlush1
- | LavenderBlush2
- | LavenderBlush3
- | LavenderBlush4
- | LawnGreen
- | LemonChiffon
- | LemonChiffon1
- | LemonChiffon2
- | LemonChiffon3
- | LemonChiffon4
- | LightBlue
- | LightBlue1
- | LightBlue2
- | LightBlue3
- | LightBlue4
- | LightCoral
- | LightCyan
- | LightCyan1
- | LightCyan2
- | LightCyan3
- | LightCyan4
- | LightGoldenrod
- | LightGoldenrod1
- | LightGoldenrod2
- | LightGoldenrod3
- | LightGoldenrod4
- | LightGoldenrodYellow
- | LightGray
- | LightPink
- | LightPink1
- | LightPink2
- | LightPink3
- | LightPink4
- | LightSalmon
- | LightSalmon1
- | LightSalmon2
- | LightSalmon3
- | LightSalmon4
- | LightSeaGreen
- | LightSkyBlue
- | LightSkyBlue1
- | LightSkyBlue2
- | LightSkyBlue3
- | LightSkyBlue4
- | LightSlateBlue
- | LightSlateGray
- | LightSteelBlue
- | LightSteelBlue1
- | LightSteelBlue2
- | LightSteelBlue3
- | LightSteelBlue4
- | LightYellow
- | LightYellow1
- | LightYellow2
- | LightYellow3
- | LightYellow4
- | LimeGreen
- | Linen
- | Magenta
- | Magenta1
- | Magenta2
- | Magenta3
- | Magenta4
- | Maroon
- | Maroon1
- | Maroon2
- | Maroon3
- | Maroon4
- | MediumAquamarine
- | MediumBlue
- | MediumOrchid
- | MediumOrchid1
- | MediumOrchid2
- | MediumOrchid3
- | MediumOrchid4
- | MediumPurple
- | MediumPurple1
- | MediumPurple2
- | MediumPurple3
- | MediumPurple4
- | MediumSeaGreen
- | MediumSlateBlue
- | MediumSpringGreen
- | MediumTurquoise
- | MediumVioletRed
- | MidnightBlue
- | MintCream
- | MistyRose
- | MistyRose1
- | MistyRose2
- | MistyRose3
- | MistyRose4
- | Moccasin
- | NavajoWhite
- | NavajoWhite1
- | NavajoWhite2
- | NavajoWhite3
- | NavajoWhite4
- | Navy
- | NavyBlue
- | OldLace
- | OliveDrab
- | OliveDrab1
- | OliveDrab2
- | OliveDrab3
- | OliveDrab4
- | Orange
- | Orange1
- | Orange2
- | Orange3
- | Orange4
- | OrangeRed
- | OrangeRed1
- | OrangeRed2
- | OrangeRed3
- | OrangeRed4
- | Orchid
- | Orchid1
- | Orchid2
- | Orchid3
- | Orchid4
- | PaleGoldenrod
- | PaleGreen
- | PaleGreen1
- | PaleGreen2
- | PaleGreen3
- | PaleGreen4
- | PaleTurquoise
- | PaleTurquoise1
- | PaleTurquoise2
- | PaleTurquoise3
- | PaleTurquoise4
- | PaleVioletRed
- | PaleVioletRed1
- | PaleVioletRed2
- | PaleVioletRed3
- | PaleVioletRed4
- | PapayaWhip
- | PeachPuff
- | PeachPuff1
- | PeachPuff2
- | PeachPuff3
- | PeachPuff4
- | Peru
- | Pink
- | Pink1
- | Pink2
- | Pink3
- | Pink4
- | Plum
- | Plum1
- | Plum2
- | Plum3
- | Plum4
- | PowderBlue
- | Purple
- | Purple1
- | Purple2
- | Purple3
- | Purple4
- | Red
- | Red1
- | Red2
- | Red3
- | Red4
- | RosyBrown
- | RosyBrown1
- | RosyBrown2
- | RosyBrown3
- | RosyBrown4
- | RoyalBlue
- | RoyalBlue1
- | RoyalBlue2
- | RoyalBlue3
- | RoyalBlue4
- | SaddleBrown
- | Salmon
- | Salmon1
- | Salmon2
- | Salmon3
- | Salmon4
- | SandyBrown
- | SeaGreen
- | SeaGreen1
- | SeaGreen2
- | SeaGreen3
- | SeaGreen4
- | SeaShell
- | SeaShell1
- | SeaShell2
- | SeaShell3
- | SeaShell4
- | Sienna
- | Sienna1
- | Sienna2
- | Sienna3
- | Sienna4
- | SkyBlue
- | SkyBlue1
- | SkyBlue2
- | SkyBlue3
- | SkyBlue4
- | SlateBlue
- | SlateBlue1
- | SlateBlue2
- | SlateBlue3
- | SlateBlue4
- | SlateGray
- | SlateGray1
- | SlateGray2
- | SlateGray3
- | SlateGray4
- | Snow
- | Snow1
- | Snow2
- | Snow3
- | Snow4
- | SpringGreen
- | SpringGreen1
- | SpringGreen2
- | SpringGreen3
- | SpringGreen4
- | SteelBlue
- | SteelBlue1
- | SteelBlue2
- | SteelBlue3
- | SteelBlue4
- | Tan
- | Tan1
- | Tan2
- | Tan3
- | Tan4
- | Thistle
- | Thistle1
- | Thistle2
- | Thistle3
- | Thistle4
- | Tomato
- | Tomato1
- | Tomato2
- | Tomato3
- | Tomato4
- | Transparent
- | Turquoise
- | Turquoise1
- | Turquoise2
- | Turquoise3
- | Turquoise4
- | Violet
- | VioletRed
- | VioletRed1
- | VioletRed2
- | VioletRed3
- | VioletRed4
- | Wheat
- | Wheat1
- | Wheat2
- | Wheat3
- | Wheat4
- | White
- | WhiteSmoke
- | Yellow
- | Yellow1
- | Yellow2
- | Yellow3
- | Yellow4
- | YellowGreen
- bgColor :: NamedColor nc => nc -> Attribute
- bgColors :: NamedColor nc => nc -> nc -> Attribute
- fillColor :: NamedColor nc => nc -> Attribute
- fillColors :: NamedColor nc => nc -> nc -> Attribute
- fontColor :: NamedColor nc => nc -> Attribute
- penColor :: NamedColor nc => nc -> Attribute
- color :: NamedColor nc => nc -> Attribute
- penWidth :: Double -> Attribute
- gradientAngle :: Int -> Attribute
- style :: Style -> Attribute
- styles :: [Style] -> Attribute
- type Style = StyleItem
- dashed :: Style
- dotted :: Style
- solid :: Style
- bold :: Style
- invis :: Style
- filled :: Style
- diagonals :: Style
- striped :: Style
- wedged :: Style
- rounded :: Style
- tapered :: Style
- radial :: Style
- shape :: Shape -> Attribute
- data Shape
- = BoxShape
- | Polygon
- | Ellipse
- | Circle
- | PointShape
- | Egg
- | Triangle
- | PlainText
- | DiamondShape
- | Trapezium
- | Parallelogram
- | House
- | Pentagon
- | Hexagon
- | Septagon
- | Octagon
- | DoubleCircle
- | DoubleOctagon
- | TripleOctagon
- | InvTriangle
- | InvTrapezium
- | InvHouse
- | MDiamond
- | MSquare
- | MCircle
- | Square
- | Star
- | Underline
- | Note
- | Tab
- | Folder
- | Box3D
- | Component
- | Promoter
- | CDS
- | Terminator
- | UTR
- | PrimerSite
- | RestrictionSite
- | FivePovOverhang
- | ThreePovOverhang
- | NoOverhang
- | Assembly
- | Signature
- | Insulator
- | Ribosite
- | RNAStab
- | ProteaseSite
- | ProteinStab
- | RPromoter
- | RArrow
- | LArrow
- | LPromoter
- | Record
- | MRecord
- arrowTo :: Arrow -> Attribute
- arrowFrom :: Arrow -> Attribute
- edgeEnds :: DirType -> Attribute
- data DirType
- type Arrow = ArrowType
- box :: Arrow
- crow :: Arrow
- diamond :: Arrow
- dotArrow :: Arrow
- inv :: Arrow
- noArrow :: Arrow
- normal :: ArrowType
- tee :: Arrow
- vee :: Arrow
- oDot :: Arrow
- invDot :: Arrow
- invODot :: Arrow
- oBox :: Arrow
- oDiamond :: Arrow
- ordering :: Order -> Attribute
- data Order
- rank :: RankType -> Attribute
- data RankType
- = SameRank
- | MinRank
- | SourceRank
- | MaxRank
- | SinkRank
The definition of attributes
Attributes are used to customise the layout and design of Dot graphs. Care must be taken to ensure that the attribute you use is valid, as not all attributes can be used everywhere.
type Attributes = [Attribute] Source
Creating labels
The following escape codes are available for labels (where applicable):
\N
- Replace with the name of the node.
\G
- Replace with the name of the graph (for node attributes) or the name of the graph or cluster, whichever is applicable (for graph, cluster and edge attributes).
\E
- Replace with the name of the edge, formed by the two adjoining nodes and the edge type.
\T
- Replace with the name of the node the edge is coming from.
\H
- Replace with the name of the node the edge is going to.
\n
- Centered newline.
\l
- Left-justified newline.
\r
- Right-justified newline.
toLabel :: Labellable a => a -> Attribute Source
Equivalent to
; the most common label
Label
. toLabelValue
Attribute
.
textLabel :: Text -> Attribute Source
An alias for toLabel
for use with the OverloadedStrings
extension.
xLabel :: Labellable a => a -> Attribute Source
Create a label outside of a node/edge. Currently only in the Graphviz development branch (2.29.*).
xTextLabel :: Text -> Attribute Source
An alias for xLabel
for use with the OverloadedStrings
extension.
forceLabels :: Attribute Source
Force the positioning of xLabel
s, even when it will cause overlaps.
textLabelValue :: Text -> Label Source
An alias for toLabelValue
for use with the OverloadedStrings
extension.
class Labellable a where Source
A convenience class to make it easier to create labels. It is
highly recommended that you make any other types that you wish to
create labels from an instance of this class, preferably via the
String
or Text
instances.
toLabelValue :: a -> Label Source
This function only creates a Label
value to enable you to use
it for Attributes
such as HeadLabel
, etc.
Labellable Bool | |
Labellable Char | |
Labellable Double | |
Labellable Int | |
Labellable String | |
Labellable Text | |
Labellable Text | |
Labellable PortName | A shorter variant than using |
Labellable Table | |
Labellable Text | |
Labellable Label | |
Labellable RecordField | |
Labellable RecordFields | |
Labellable (PortName, EscString) | A shorter variant than using |
Colors
The recommended way of dealing with colors in Dot graphs is to use the
named X11Color
s rather than explicitly specifying RGB, RGBA or HSV
colors.
These functions also allow you to use SVG and Brewer colors, but
X11 colors are generally preferable. If you wish to use SVG
colors, either import this module hiding X11Color
or import the
SVG module qualified.
The X11 colors that Graphviz uses. Note that these are slightly
different from the "normal" X11 colors used (e.g. the inclusion
of Crimson
). Graphviz's list of colors also duplicated almost
all Gray
colors with Grey
ones; parsing of an X11Color
which is specified using "grey" will succeed, even for those
that don't have the duplicate spelling (e.g. DarkSlateGray1
).
bgColor :: NamedColor nc => nc -> Attribute Source
bgColors :: NamedColor nc => nc -> nc -> Attribute Source
As with bgColor
, but add a second color to create a gradient
effect. Requires Graphviz >= 2.29.0.
fillColor :: NamedColor nc => nc -> Attribute Source
fillColors :: NamedColor nc => nc -> nc -> Attribute Source
As with fillColor
, but add a second color to create a gradient
effect. Requires Graphviz >= 2.29.0.
fontColor :: NamedColor nc => nc -> Attribute Source
Specify the color of text.
penColor :: NamedColor nc => nc -> Attribute Source
Specify the color of the bounding box of a cluster.
color :: NamedColor nc => nc -> Attribute Source
The color
attribute serves several purposes. As such care must
be taken when using it, and it is preferable to use those
alternatives that are available when they exist.
Stylistic attributes
Various stylistic attributes to customise how items are drawn.
Unless specified otherwise, all Style
s are available for nodes;
those specified also can be used for edges and clusters.
penWidth :: Double -> Attribute Source
Specify the width of lines. Valid for clusters, nodes and edges.
gradientAngle :: Int -> Attribute Source
Specify the angle at which gradient fills are drawn; for use with
bgColors
and fillColors
. Requires Graphviz >= 2.29.0.
Only available for rectangularly-shaped nodes and clusters. Requires Graphviz >= 2.30.0.
Only available for edges; creates a tapered edge between the two nodes. Requires Graphviz >= 2.29.0.
Available for nodes, clusters and edges. When using
gradientAngle
, indicates that a radial gradient should be used.
Requires Graphviz >= 2.29.0.
Node shapes
Geometries of shapes are affected by the attributes Regular
,
Peripheries
and Orientation
.
BoxShape | Has synonyms of rect and rectangle. |
Polygon | Also affected by |
Ellipse | Has synonym of oval. |
Circle | |
PointShape | Only affected by |
Egg | |
Triangle | |
PlainText | Has synonym of none. Recommended for
|
DiamondShape | |
Trapezium | |
Parallelogram | |
House | |
Pentagon | |
Hexagon | |
Septagon | |
Octagon | |
DoubleCircle | |
DoubleOctagon | |
TripleOctagon | |
InvTriangle | |
InvTrapezium | |
InvHouse | |
MDiamond | |
MSquare | |
MCircle | |
Square | |
Star | Requires Graphviz >= 2.32.0. |
Underline | Requires Graphviz >= 2.36.0. |
Note | |
Tab | |
Folder | |
Box3D | |
Component | |
Promoter | Requires Graphviz >= 2.30.0. |
CDS | Requires Graphviz >= 2.30.0. |
Terminator | Requires Graphviz >= 2.30.0. |
UTR | Requires Graphviz >= 2.30.0. |
PrimerSite | Requires Graphviz >= 2.30.0. |
RestrictionSite | Requires Graphviz >= 2.30.0. |
FivePovOverhang | Requires Graphviz >= 2.30.0. |
ThreePovOverhang | Requires Graphviz >= 2.30.0. |
NoOverhang | Requires Graphviz >= 2.30.0. |
Assembly | Requires Graphviz >= 2.30.0. |
Signature | Requires Graphviz >= 2.30.0. |
Insulator | Requires Graphviz >= 2.30.0. |
Ribosite | Requires Graphviz >= 2.30.0. |
RNAStab | Requires Graphviz >= 2.30.0. |
ProteaseSite | Requires Graphviz >= 2.30.0. |
ProteinStab | Requires Graphviz >= 2.30.0. |
RPromoter | Requires Graphviz >= 2.30.0. |
RArrow | Requires Graphviz >= 2.30.0. |
LArrow | Requires Graphviz >= 2.30.0. |
LPromoter | Requires Graphviz >= 2.30.0. |
Record | Must specify the record shape with a |
MRecord | Must specify the record shape with a |
Edge arrows
Specifying where to draw arrows on an edge.
Specify where to place arrow heads on an edge.
Default arrow types.
The 9 primitive arrows.
5 derived arrows.
Layout
ordering :: Order -> Attribute Source
Specify an ordering of edges of a node: either the outgoing or the incoming edges of a node must appear left-to-right in the same order in which they are defined in the input.
When specified as both a global graph or sub-graph level attribute, then it takes precedence over an attribute specified for an individual node.