Skip to content
This repository was archived by the owner on Oct 17, 2021. It is now read-only.
mattt edited this page Mar 30, 2020 · 10 revisions

Edge

An edge between two nodes.

@dynamicMemberLookup public struct Edge: Hashable

Inheritance

Hashable

Nested Types

Edge.Direction, Edge.Direction.Edge.Arrow, Edge.Direction.Edge.Arrow.Shape.Side, Edge.Direction.Edge.Arrow.Shape, Edge.Direction.Edge.Arrow.Shape.Side.Port.Style, Edge.Direction.Edge.Arrow.Shape.Side.Port.Style.Attributes, Edge.Direction.Edge.Arrow.Shape.Side.Port

Properties

labelAngle

This, along with labeldistance, determine where the headlabel (taillabel) are placed with respect to the head (tail) in polar coordinates. The origin in the coordinate system is the point where the edge touches the node. The ray of 0 degrees goes from the origin back along the edge, parallel to the edge at the origin. The angle, in degrees, specifies the rotation from the 0 degree ray, with positive angles moving counterclockwise and negative angles moving clockwise.

var labelAngle: Double?

comment

Comments are inserted into output. Device-dependent

var comment: String?

`class`

Unofficial, but supported by certain output formats, like svg.

var `class`: String?

weight

Weight of edge. In dot, the heavier the weight, the shorter, straighter and more vertical the edge is. N.B. Weights in dot must be integers. For twopi, a weight of 0 indicates the edge should not be used in constructing a spanning tree from the root. For other layouts, a larger weight encourages the layout to make the edge length closer to that specified by the len attribute.

var weight: Double?

weight E int double 1 0(dot,twopi) 1(neato,fdp)

headClip

If true, the head of an edge is clipped to the boundary of the head node; otherwise, the end of the edge goes to the center of the node, or the center of a port, if applicable.

var headClip: Bool?

head

var head: Arrow?

headPort

Indicates where on the head node to attach the head of the edge. In the default case, the edge is aimed towards the center of the node, and then clipped at the node boundary. See limitation.

var headPort: Port?

tooltip

Tooltip annotation attached to the non-label part of an edge. This is used only if the edge has a URL or edgeURL attribute.

var tooltip: String?

E escString "" svg, cmap only

headLabel

var headLabel: String?

style

Set style information for components of the graph. For cluster subgraphs, if style="filled", the cluster box's background is filled. If the default style attribute has been set for a component, an individual component can use style="" to revert to the normal default. For example, if the graph has

var style: Style?

edge [style="invis"]

making all edges invisible, a specific edge can overrride this via:

a -> b [style=""]

Of course, the component can also explicitly set its style attribute to the desired value.

tail

var tail: Arrow?

Seealso: head

labelFloat

var labelFloat: Bool?

If true, allows edge labels to be less constrained in position. In particular, it may appear on top of other edges

ordering

If the value of the attribute is "out", then the outedges of a node, that is, edges with the node as its tail node, must appear left-to-right in the same order in which they are defined in the input. If the value of the attribute is "in", then the inedges of a node must appear left-to-right in the same order in which they are defined in the input. If defined as a graph or subgraph attribute, the value is applied to all nodes in the graph or subgraph. Note that the graph attribute takes precedence over the node attribute.

var ordering: Ordering?

tailTarget

If the edge has a tailURL, this attribute determines which window of the browser is used for the URL. Setting it to "_graphviz" will open a new window if it doesn't already exist, or reuse it if it does. If undefined, the value of the target is used.

var tailTarget: String?

Seealso: headTarget

noJustify

By default, the justification of multi-line labels is done within the largest context that makes sense. Thus, in the label of a polygonal node, a left-justified line will align with the left side of the node (shifted by the prescribed margin). In record nodes, left-justified line will line up with the left side of the enclosing column of fields. If nojustify is "true", multi-line labels will be justified in the context of itself. For example, if the attribute is set, the first label line is long, and the second is shorter and left-justified, the second will align with the left-most character in the first line, regardless of how large the node might be.

var noJustify: Bool?

textColor

var textColor: Color?

The font color for object labels.

fontName

var fontName: String?

The name of the used font. (System dependend) The font size for object labels.

tailClip

If true, the tail of an edge is clipped to the boundary of the tail node; otherwise, the end of the edge goes to the center of the node, or the center of a port, if applicable.

var tailClip: Bool?

Seealso: headClip

labelDistance

labeldistance Multiplicative scaling factor adjusting the distance that the headlabel(taillabel) is from the head(tail) node. The default distance is 10 points. See labelangle for more details.

var labelDistance: Double?

headTarget

If the edge has a headURL, this attribute determines which window of the browser is used for the URL. Setting it to "_graphviz" will open a new window if it doesn't already exist, or reuse it if it does. If undefined, the value of the target is used.

var headTarget: String?

labelURL

var labelURL: URL?

preferredEdgeLength

len Preferred edge length, in inches.

var preferredEdgeLength: Double?

side

var side: Side?

url

var url: URL?

headTooltip

Tooltip annotation attached to the head of an edge. This is used only if the edge has a headURL attribute.

var headTooltip: String?

arrowSize

Multiplicative scale factor for arrowheads.

var arrowSize: Double?

decorate

If true, attach edge label to edge by a 2-segment polyline, underlining the label, then going to the closest point of spline.

var decorate: Bool?

from

var from: Node.ID

logicalTail

Logical tail of an edge. When compound is true, if ltail is defined and is the name of a cluster containing the real head, the edge is clipped to the boundary of the cluster. See limitation.

var logicalTail: String?

labelWidth

Width of graph or cluster label, in inches.

var labelWidth: Double?

href

var href: String?

dictionaryValue

var dictionaryValue: [String: Any]

tailTooltip

var tailTooltip: String?

Seealso: headTooltip

exteriorLabel

External label for a node or edge. For nodes, the label will be placed outside of the node but near it. For edges, the label will be placed near the center of the edge. This can be useful in dot to avoid the occasional problem when the use of edge labels distorts the layout. For other layouts, the xlabel attribute can be viewed as a synonym for the label attribute. These labels are added after all nodes and edges have been placed. The labels will be placed so that they do not overlap any node or label. This means it may not be possible to place all of them. To force placing all of them, use the forcelabels attribute.

var exteriorLabel: String?

to

var to: Node.ID

strokeWidth

penwidth Specifies the width of the pen, in points, used to draw lines and curves, including the boundaries of edges and clusters. The value is inherited by subclusters. It has no effect on text.

var strokeWidth: Double?

tailLabel

var tailLabel: String?

guideBoxLocation

showboxes Print guide boxes in PostScript at the beginning of routesplines if 1, or at the end if 2. (Debugging)

var guideBoxLocation: Location?
ENG    int    0    0    dot only

tailURL

var tailURL: URL?

Seealso: headURL

minimumRankDifference

minlen Minimum edge length (rank difference between head and tail).

var minimumRankDifference: Int?

E int 1 0 dot only

open

var open: Bool?

strokeColor

var strokeColor: Color?

Basic drawing color for graphics.

sameTail

Edges with the same tail and the same sametail value are aimed at the same point on the tail. This has no effect on loops. Each node can have at most 5 unique sametail values. See limitation.

var sameTail: String?
dot only

Seealso: sameHead

exteriorLabelPosition

Position of an exterior label, in points. The position indicates the center of the label.

var exteriorLabelPosition: Point?

constraint

If false, the edge is not used in ranking the nodes.

var constraint: Bool?

Normally, edges are used to place the nodes on ranks. In the second graph below, all nodes were placed on different ranks. In the first example, the edge b -> c does not add a constraint during rank assignment, so the only constraints are that a be above b and c.

If false, the edge is not used in ranking the nodes. For example, in the graph digraph G { a -> c; a -> b; b -> c [constraint=false]; }

the edge b -> c does not add a constraint during rank assignment, so the only constraints are that a be above b and c, yielding the graph:

fontSize

var fontSize: Double?

shape

var shape: Shape?

headLabelPosition

Position of an edge's head label, in points. The position indicates the center of the label.

var headLabelPosition: Point?

headURL

var headURL: URL?

sameHead

Edges with the same head and the same samehead value are aimed at the same point on the head. This has no effect on loops. Each node can have at most 5 unique samehead values. See limitation.

var sameHead: String?
dot only

logicalHead

Logical head of an edge. When compound is true, if lhead is defined and is the name of a cluster containing the real head, the edge is clipped to the boundary of the cluster. See limitation.

var logicalHead: String?

Clone this wiki locally