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.Shape.Side.Port.Style.Attributes, Edge.Direction.Edge.Arrow.Shape.Side.Port.Style, Edge.Direction.Edge.Arrow, Edge.Direction.Edge.Arrow.Shape, Edge.Direction.Edge.Arrow.Shape.Side.Port, Edge.Direction.Edge.Arrow.Shape.Side

Properties

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?

side

var side: Side?

to

var to: Node.ID

fontSize

var fontSize: Double?

headTooltip

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

var headTooltip: String?

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

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

preferredEdgeLength

len Preferred edge length, in inches.

var preferredEdgeLength: Double?

head

var head: Arrow?

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

labelURL

var labelURL: URL?

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:

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?

tailURL

var tailURL: URL?

Seealso: headURL

fontName

var fontName: String?

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

dictionaryValue

var dictionaryValue: [String: Any]

shape

var shape: Shape?

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

href

var href: String?

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

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?

url

var url: URL?

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?

`class`

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

var `class`: String?

arrowSize

Multiplicative scale factor for arrowheads.

var arrowSize: Double?

textColor

var textColor: Color?

The font color for object labels.

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.

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?

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?

tail

var tail: Arrow?

Seealso: head

headURL

var headURL: URL?

exteriorLabelPosition

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

var exteriorLabelPosition: Point?

open

var open: Bool?

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?

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?

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

from

var from: Node.ID

tailTooltip

var tailTooltip: String?

Seealso: headTooltip

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?

headLabelPosition

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

var headLabelPosition: Point?

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)

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?

headLabel

var headLabel: String?

comment

Comments are inserted into output. Device-dependent

var comment: String?

labelWidth

Width of graph or cluster label, in inches.

var labelWidth: Double?

strokeColor

var strokeColor: Color?

Basic drawing color for graphics.

tailLabel

var tailLabel: String?

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

minimumRankDifference

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

var minimumRankDifference: Int?

E int 1 0 dot only

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?

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?

Clone this wiki locally