-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdot.html
711 lines (711 loc) · 37.1 KB
/
dot.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
<!-- Creator : groff version 1.22.3 -->
<!-- CreationDate: Thu Feb 14 18:51:27 2019 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for HTML5 for Linux version 5.2.0">
<meta name="generator" content="groff -Thtml, see www.gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Content-Style" content="text/css">
<style type="text/css">
p { margin-top: 0; margin-bottom: 0; vertical-align: top }
pre { margin-top: 0; margin-bottom: 0; vertical-align: top }
table { margin-top: 0; margin-bottom: 0; vertical-align: top }
h1 { text-align: center }
</style>
<title>DOT</title>
</head>
<body>
<h1 align="center">DOT</h1>
<a href="#NAME">NAME</a><br>
<a href="#SYNOPSIS">SYNOPSIS</a><br>
<a href="#DESCRIPTION">DESCRIPTION</a><br>
<a href="#OUTPUT%20FORMATS">OUTPUT FORMATS</a><br>
<a href="#GRAPH%20FILE%20LANGUAGE">GRAPH FILE LANGUAGE</a><br>
<a href="#GRAPH,%20NODE%20AND%20EDGE%20ATTRIBUTES">GRAPH, NODE AND
EDGE ATTRIBUTES</a><br>
<a href=
"#Attributes%20Common%20to%20Nodes,%20Edges,%20Clusters%20and%20Graphs">
Attributes Common to Nodes, Edges, Clusters and Graphs</a><br>
<a href="#Graph%20Attributes">Graph Attributes</a><br>
<a href="#Node%20Attributes">Node Attributes</a><br>
<a href="#Edge%20Attributes">Edge Attributes</a><br>
<a href="#COMMAND-LINE%20OPTIONS">COMMAND-LINE OPTIONS</a><br>
<a href="#EXAMPLES">EXAMPLES</a><br>
<a href="#CAVEATS">CAVEATS</a><br>
<a href="#AUTHORS">AUTHORS</a><br>
<a href="#SEE%20ALSO">SEE ALSO</a><br>
<hr>
<h2>NAME <a name="NAME" id="NAME"></a></h2>
<p style="margin-left:11%; margin-top: 1em">dot - filter for
drawing directed graphs<br>
neato - filter for drawing undirected graphs<br>
twopi - filter for radial layouts of graphs<br>
circo - filter for circular layout of graphs<br>
fdp - filter for drawing undirected graphs<br>
sfdp - filter for drawing large undirected graphs<br>
patchwork - filter for squarified tree maps<br>
osage - filter for array-based layouts</p>
<h2>SYNOPSIS <a name="SYNOPSIS" id="SYNOPSIS"></a></h2>
<p style="margin-left:11%; margin-top: 1em"><b>dot</b>
[<i>options</i>] [files] <b><br>
neato</b> [<i>options</i>] [files] <b><br>
twopi</b> [<i>options</i>] [files] <b><br>
circo</b> [<i>options</i>] [files] <b><br>
fdp</b> [<i>options</i>] [files] <b><br>
sfdp</b> [<i>options</i>] [files] <b><br>
patchwork</b> [<i>options</i>] [files] <b><br>
osage</b> [<i>options</i>] [files]</p>
<h2>DESCRIPTION <a name="DESCRIPTION" id="DESCRIPTION"></a></h2>
<p style="margin-left:11%; margin-top: 1em">These are a collection
of programs for drawing graphs. There is actually only one main
program; the specific layout algorithms are implemented as plugins.
Thus, they largely share all of the same command-line options.</p>
<p style="margin-left:11%; margin-top: 1em"><i>dot</i> draws
directed graphs. It works well on directed acyclic graphs and other
graphs that can be drawn as hierarchies or have a natural
’’flow.’’</p>
<p style="margin-left:11%; margin-top: 1em"><i>neato</i> draws
undirected graphs using a ’’spring’’ model and reducing the related
energy (see Kamada and Kawai, Information Processing Letters 31:1,
April 1989).</p>
<p style="margin-left:11%; margin-top: 1em"><i>twopi</i> draws
graphs using a radial layout (see G. Wills, Symposium on Graph
Drawing GD’97, September, 1997). Basically, one node is chosen as
the center and put at the origin. The remaining nodes are placed on
a sequence of concentric circles centered about the origin, each a
fixed radial distance from the previous circle. All nodes distance
1 from the center are placed on the first circle; all nodes
distance 1 from a node on the first circle are placed on the second
circle; and so forth.</p>
<p style="margin-left:11%; margin-top: 1em"><i>circo</i> draws
graphs using a circular layout (see Six and Tollis, GD ’99 and
ALENEX ’99, and Kaufmann and Wiese, GD ’02.) The tool identifies
biconnected components and draws the nodes of the component on a
circle. The block-cutpoint tree is then laid out using a recursive
radial algorithm. Edge crossings within a circle are minimized by
placing as many edges on the circle’s perimeter as possible. In
particular, if the component is outerplanar, the component will
have a planar layout. If a node belongs to multiple non-trivial
biconnected components, the layout puts the node in one of them. By
default, this is the first non-trivial component found in the
search from the root component.</p>
<p style="margin-left:11%; margin-top: 1em"><i>fdp</i> draws
undirected graphs using a ’’spring’’ model. It relies on a
force-directed approach in the spirit of Fruchterman and Reingold
(cf. Software-Practice & Experience 21(11), 1991, pp.
1129-1164).</p>
<p style="margin-left:11%; margin-top: 1em"><i>sfdp</i> also draws
undirected graphs using the ’’spring’’ model described above, but
it uses a multi-scale approach to produce layouts of large graphs
in a reasonably short time.</p>
<p style="margin-left:11%; margin-top: 1em"><i>patchwork</i> draws
the graph as a squarified treemap (see M. Bruls et al.,
’’Squarified treemaps’’, Proc. Joint Eurographics and IEEE TCVG
Symp. on Visualization, 2000, pp. 33-42). The clusters of the graph
are used to specify the tree.</p>
<p style="margin-left:11%; margin-top: 1em"><i>osage</i> draws the
graph using its cluster structure. For a given cluster, each of its
subclusters is laid out internally. Then the subclusters, plus any
remaining nodes, are repositioned based on the cluster’s
<b>pack</b> and <b>packmode</b> attributes.</p>
<h2>OUTPUT FORMATS <a name="OUTPUT FORMATS"></a></h2>
<p style="margin-left:11%; margin-top: 1em">Graphviz uses an
extensible plugin mechanism for its output renderers, so to see
what output formats your installation of dot supports you can use
’’dot -T:’’ and check the warning message. Also, The plugin
mechanism supports multiple implementations of the output formats,
allowing variations in the renderers and formatters. To see what
variants are available for a particular output format, use, for
example: ’’dot -Tpng:’’ and to force a particular variant, use, for
example: ’’dot -Tpng:gd’’</p>
<p style="margin-left:11%; margin-top: 1em">Traditionally, Graphviz
supports the following: <b><br>
-Tdot</b> (Dot format containing layout infomation), <b><br>
-Txdot</b> (Dot format containing complete layout infomation),
<b><br>
-Tps</b> (PostScript), <b><br>
-Tpdf</b> (PDF), <b><br>
-Tsvg -Tsvgz</b> (Structured Vector Graphics), <b><br>
-Tfig</b> (XFIG graphics), <b><br>
-Tpng</b> (png bitmap graphics), <b><br>
-Tgif</b> (gif bitmap graphics), <b><br>
-Tjpg -Tjpeg</b> (jpeg bitmap graphics), <b><br>
-Tjson</b> (xdot information encoded in JSON), <b><br>
-Timap</b> (imagemap files for httpd servers for each node or edge
that has a non-null <b>href</b> attribute.), <b><br>
-Tcmapx</b> (client-side imagemap for use in html and xhtml).<br>
Additional less common or more special-purpose output formats can
be found at //http://www.graphviz.org/content/output-formats.</p>
<p style="margin-left:11%; margin-top: 1em">Alternative plugins
providing support for a given output format can be found from the
error message resulting from appending a ’:’ to the format. e.g.
<b>-Tpng:</b> The first plugin listed is always the default.</p>
<p style="margin-left:11%; margin-top: 1em">The <b>-P</b> switch
can be used to produce a graph of all output variants supported by
plugins in the local installation of graphviz.</p>
<h2>GRAPH FILE LANGUAGE <a name="GRAPH FILE LANGUAGE"></a></h2>
<p style="margin-left:11%; margin-top: 1em">Here is a synopsis of
the graph file language, normally using the extension <b>.gv</b>,
for graphs:</p>
<p style="margin-left:11%; margin-top: 1em">[<b>strict</b>]
(<b>graph</b>|<b>digraph</b>) <i>name</i> { <i>statement-list</i>
}<br>
is the top-level graph. If the graph is <b>strict</b>, then
multiple edges are not allowed between the same pairs of nodes. If
it is a directed graph, indicated by <b>digraph</b>, then the
<i>edgeop</i> must be "->". If it is an undirected <b>graph</b>
then the <i>edgeop</i> must be "--".</p>
<p style="margin-left:11%; margin-top: 1em">Statements may be:</p>
<p style="margin-left:11%; margin-top: 1em">
<i>name</i><b>=</b><i>val</i><b>;<br>
node [</b><i>name</i><b>=</b><i>val</i><b>];<br>
edge [</b><i>name</i><b>=</b><i>val</i><b>];</b><br>
Set default graph, node, or edge attribute <i>name</i> to
<i>val</i>. Any subgraph, node, or edge appearing after this
inherits the new default attributes.</p>
<p style="margin-left:11%; margin-top: 1em"><b>n0
[</b><i>name0=val0,name1=val1,...</i><b>];</b><br>
Creates node <b>n0</b> (if it does not already exist) and sets its
attributes according to the optional list.</p>
<p style="margin-left:11%; margin-top: 1em"><b>n0</b> <i>edgeop</i>
n1 <i>edgeop ... edgeop</i> nn
<b>[</b><i>name0=val0,name1=val1,...</i><b>];</b><br>
Creates edges between nodes <b>n0</b>, <b>n1</b>, ..., <b>nn</b>
and sets their attributes according to the optional list. Creates
nodes as necessary.</p>
<p style="margin-left:11%; margin-top: 1em">[<b>subgraph</b>
<i>name</i>] <b>{</b> <i>statement-list</i> <b>}</b><br>
Creates a subgraph. Subgraphs may be used in place of <b>n0</b>,
..., <b>nn</b> in the above statements to create edges.
[<b>subgraph</b> <i>name</i>] is optional; if missing, the subgraph
is assigned an internal name.</p>
<p style="margin-left:11%; margin-top: 1em">The language accepts
both C-style comments /*C...*/ or //...</p>
<p style="margin-left:11%; margin-top: 1em">Attribute names and
values are ordinary (C-style) strings. The following sections
describe attributes that control graph layout.</p>
<p style="margin-left:11%; margin-top: 1em">A more complete
description of the language can be found at
http://www.graphviz.org/content/dot-language.</p>
<h2>GRAPH, NODE AND EDGE ATTRIBUTES <a name=
"GRAPH, NODE AND EDGE ATTRIBUTES"></a></h2>
<p style="margin-left:11%; margin-top: 1em">Graphviz uses the
<i>name</i>=<i>value</i> attributes, attached to graphs, subgraphs,
nodes and edges, to tailor the layout and rendering. We list the
more prominent attributes below. The complete list is available at
http://www.graphviz.org/content/attrs.</p>
<h2>Attributes Common to Nodes, Edges, Clusters and Graphs <a name=
"Attributes Common to Nodes, Edges, Clusters and Graphs"></a></h2>
<p style="margin-left:11%; margin-top: 1em"><b>href=</b><i>url</i>
the default url for image map files; in PostScript files, the base
URL for all relative URLs, as recognized by Acrobat Distiller 3.0
and up.</p>
<p style="margin-left:11%; margin-top: 1em"><b>URL=</b><i>url</i>
(’’URL’’ is a synonym for ’’href.’’)</p>
<p style="margin-left:11%; margin-top: 1em">
<b>fontcolor=</b><i>colorvalue</i> sets the label text color.</p>
<p style="margin-left:11%; margin-top: 1em">A <i>colorvalue</i> may
be "<i>h,s,v</i><b>"</b> (hue, saturation, brightness) floating
point numbers between 0 and 1, or an X11 color name such as
<b>white, black, red, green, blue, yellow, magenta,</b> or
<b>cyan</b>, or a "<i>#rrggbb" (red, green, blue, 2 hex characters
each) value. See http://www.graphviz.org/content/attrs#kcolor and
http://www.graphviz.org/content/color-names for further
details.</i></p>
<p style="margin-left:11%; margin-top: 1em">
<b>fontsize=</b><i>n</i> sets the label type size to <i>n</i>
points.</p>
<p style="margin-left:11%; margin-top: 1em">
<b>fontname=</b><i>name</i> sets the label font family name.</p>
<p style="margin-left:11%; margin-top: 1em">
<b>label=</b><i>text</i> where <i>text</i> may include escaped
newlines \n, \l, or \r for center, left, and right justified lines.
The string ’\G’ value will be replaced by the graph name. For node
labels, the string ’\N’ value will be replaced by the node name.
For edges, if the substring ’\T’ is found in a label, it will be
replaced by the name of the tail node; if the substring ’\H’ is
found in a label, it will be replaced by the name of the head node;
if the substring ’\E’ value is found in a label it will be replaced
by: <i>tail_node_name</i>-><i>head_node_name</i> or by:
<i>tail_node_name</i>--<i>head_node_name</i> for undirected
graphs.</p>
<p style="margin-left:11%; margin-top: 1em">Graphviz also supports
special HTML-like labels for constructing complex node content. A
full-description of these is given at
http://www.graphviz.org/content/node-shapes#html.</p>
<p style="margin-left:11%; margin-top: 1em">If a node has
<b>shape=record</b>, the label may contain recursive box lists
delimited by { | }. Port identifiers in labels are set off by angle
brackets < >.</p>
<h2>Graph Attributes <a name="Graph Attributes"></a></h2>
<p style="margin-left:11%; margin-top: 1em">
<b>size="</b><i>x,y</i><b>"</b> specifies the maximum bounding box
of drawing in inches.</p>
<p style="margin-left:11%; margin-top: 1em"><b>ratio=</b><i>f</i>
sets the aspect ratio to <i>f</i> which may be a floating point
number, or one of the keywords <b>fill</b>, <b>compress</b>, or
<b>auto</b>.</p>
<p style="margin-left:11%; margin-top: 1em">
<b>layout=</b><i>engine</i> indicates the preferred layout engine
(<b>dot</b>, <b>neato</b>, <b>fdp</b>, etc.) overriding the default
from the basename of the command or the -K commandline option.</p>
<p style="margin-left:11%; margin-top: 1em"><b>margin=</b><i>f</i>
sets the page margin (included in the page size).</p>
<p style="margin-left:11%; margin-top: 1em"><b>ordering=out</b>
constrains order of out-edges in a subgraph according to their file
sequence.</p>
<p style="margin-left:11%; margin-top: 1em"><b>rotate=90</b> sets
landscape mode. (<b>orientation=land</b> is backward compatible but
obsolete.)</p>
<p style="margin-left:11%; margin-top: 1em"><b>center=</b><i>n</i>
a non-zero value centers the drawing on the page.</p>
<p style="margin-left:11%; margin-top: 1em">
<b>color=</b><i>colorvalue</i> sets foreground color
(<b>bgcolor</b> for background).</p>
<p style="margin-left:11%; margin-top: 1em">
<b>overlap=</b><i>mode</i>. This specifies what algorithm should do
if any nodes overlap. If mode is <b>false</b>, the program uses the
Prism algorithm to adjust the nodes to eliminate overlaps. If mode
is <b>scale</b>, the layout is uniformly scaled up, preserving node
sizes, until nodes no longer overlap. The latter technique removes
overlaps while preserving symmetry and structure, while the former
removes overlaps more compactly but destroys symmetries. If mode is
<b>true</b> (the default), no repositioning is done. Since the
<b>dot</b> algorithm always produces a layout with no node
overlaps, this attribute is only useful with other layouts.</p>
<p style="margin-left:11%; margin-top: 1em">
<b>stylesheet=</b><i>"file.css"</i> includes a reference to a
stylesheet in -Tsvg and -Tsvgz outputs. Ignored by other
formats.</p>
<p style="margin-left:11%; margin-top: 1em"><b>splines</b> If set
to <b>true</b>, edges are drawn as splines. If set to
<b>polyline</b>, edges are drawn as polylines. If set to
<b>ortho</b>, edges are drawn as orthogonal polylines. In all of
these cases, the nodes must not overlap. If <b>splines=false</b> or
<b>splines=line</b>, edges are drawn as line segments. The default
is <b>true</b> for dot, and <b>false</b> for all other layouts.</p>
<p style="margin-left:11%; margin-top: 1em"><b>(dot-specific
attributes)</b></p>
<p style="margin-left:11%; margin-top: 1em"><b>nodesep=</b><i>f</i>
sets the minimum separation between nodes.</p>
<p style="margin-left:11%; margin-top: 1em"><b>ranksep=</b><i>f</i>
sets the minimum separation between ranks.</p>
<p style="margin-left:11%; margin-top: 1em"><b>rankdir=LR|RL|BT</b>
requests a left-to-right, right-to-left, or bottom-to-top,
drawing.</p>
<p style="margin-left:11%; margin-top: 1em"><b>rank=same</b> (or
<b>min</b> or <b>max</b>) in a subgraph constrains the rank
assignment of its nodes. If a subgraph’s name has the prefix
<b>cluster</b>, its nodes are drawn in a distinct rectangle of the
layout. Clusters may be nested.</p>
<p style="margin-left:11%; margin-top: 1em"><b>(neato-specific
attributes)<br>
mode=</b><i>val</i>. Algorithm for minimizing energy in the layout.
By default, <b>neato</b> uses stress majorization. If
<b>mode=KK</b>, it uses a version of gradient descent.</p>
<p style="margin-left:11%; margin-top: 1em">
<b>model=</b><i>val</i>. The <b>neato</b> model computes the
desired distances between all pairs of vertices. By default, it
uses the length of the shortest path. If <b>model</b> is set to
<b>circuit</b>, a circuit-resistance model is used. If <b>model</b>
is set to <b>subset</b>, it uses a model whereby the edge length is
the number of nodes that are neighbors of exactly one of the edge’s
vertices.</p>
<p style="margin-left:11%; margin-top: 1em">
<b>start=</b><i>val</i>. Requests random initial placement and
seeds the random number generator. If <i>val</i> is not an integer,
the process ID or current time is used as the seed.</p>
<p style="margin-left:11%; margin-top: 1em">
<b>epsilon=</b><i>n</i>. Sets the cutoff for the solver. The
default is 0.1.</p>
<p style="margin-left:11%; margin-top: 1em"><b>(twopi-specific
attributes)<br>
root=</b><i>ctr</i>. This specifies the node to be used as the
center of the layout. If not specified, <i>twopi</i> will randomly
pick one of the nodes that are furthest from a leaf node, where a
leaf node is a node of degree 1. If no leaf nodes exists, an
arbitrary node is picked as center.</p>
<p style="margin-left:11%; margin-top: 1em">
<b>ranksep=</b><i>val</i>. Specifies the radial distance in inches
between the sequence of rings. The default is 0.75.</p>
<p style="margin-left:11%; margin-top: 1em"><b>(circo-specific
attributes)<br>
root=</b><i>nodename</i>. Specifies the name of a node occurring in
the root block. If the graph is disconnected, the <b>root</b> node
attribute can be used to specify additional root blocks.</p>
<p style="margin-left:11%; margin-top: 1em">
<b>mindist=</b><i>value</i>. Sets the minimum separation between
all nodes. If not specified then <i>circo</i> uses a default value
of 1.0.</p>
<p style="margin-left:11%; margin-top: 1em"><b>(fdp-specific
attributes)<br>
K=</b><i>val</i>. Sets the default ideal node separation in the
layout.</p>
<p style="margin-left:11%; margin-top: 1em">
<b>maxiter=</b><i>val</i>. Sets the maximum number of iterations
used to layout the graph.</p>
<p style="margin-left:11%; margin-top: 1em">
<b>start=</b><i>val</i>. Adjusts the random initial placement of
nodes with no specified position. If <i>val</i> is is an integer,
it is used as the seed for the random number generator. If
<i>val</i> is not an integer, a random system-generated integer,
such as the process ID or current time, is used as the seed.</p>
<h2>Node Attributes <a name="Node Attributes"></a></h2>
<p style="margin-left:11%; margin-top: 1em"><b>height=</b><i>d</i>
or <b>width=</b><i>d</i> sets minimum height or width. Adding
<b>fixedsize=true</b> forces these to be the actual size (text
labels are ignored).</p>
<p style="margin-left:11%; margin-top: 1em">
<b>shape=</b><i>builtin_polygon</i> record epsf <i><br>
builtin_polygon</i> can be such values as <b>plaintext, ellipse,
oval, circle, egg, triangle, box, diamond, trapezium,
parallelogram, house, hexagon, octagon, note, tab, box3d, or
component,</b>, among others. (Polygons are defined or modified by
the following node attributes: <b>regular</b>, <b>peripheries</b>,
<b>sides</b>, <b>orientation</b>, <b>distortion</b> and
<b>skew</b>.) <b>epsf</b> uses the node’s <b>shapefile</b>
attribute as the path name of an external EPSF file to be
automatically loaded for the node shape.</p>
<p style="margin-left:11%; margin-top: 1em">See
http://www.graphviz.org/content/node-shapes for a complete
description of node shapes.</p>
<p style="margin-left:11%; margin-top: 1em">
<b>color=</b><i>colorvalue</i> sets the outline color, and the
default fill color if style=filled and <b>fillcolor</b> is not
specified.</p>
<p style="margin-left:11%; margin-top: 1em">
<b>fillcolor=</b><i>colorvalue</i> sets the fill color when
style=filled. If not specified, the fillcolor when style=filled
defaults to be the same as the outline color.</p>
<p style="margin-left:11%; margin-top: 1em"><b>style=filled solid
dashed dotted bold invis</b></p>
<p style="margin-left:11%; margin-top: 1em">
<b>xlabel=</b><i>"text"</i> specifies a label that will be place
near, but outside, of a node. The normal <b>label</b> string is
placed within the node shape.</p>
<p style="margin-left:11%; margin-top: 1em">
<b>target=</b><i>"target"</i> is a target string for client-side
imagemaps and SVG, effective when nodes have a URL. The target
string is used to determine 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 the target string
is empty, the default, then no target attribute is included in the
output. The substrings ’\N’ and ’\G’ are substituted in the same
manner as for the node label attribute. Additionally the substring
’\L’ is substituted with the node label string.</p>
<p style="margin-left:11%; margin-top: 1em">
<b>tooltip=</b><i>"text"</i> is a tooltip string for client-side
imagemaps and SVG, effective when nodes have a URL. The tooltip
string defaults to be the same as the label string, but this
attribute permits nodes without labels to still have tooltips thus
permitting denser graphs. The substrings ’\N’ and ’\G’ are
substituted in the same manner as for the node label attribute.
Additionally the substring ’\L’ is substituted with the node label
string.</p>
<p style="margin-left:11%; margin-top: 1em">The following
attributes apply only to polygon shape nodes:</p>
<p style="margin-left:11%; margin-top: 1em"><b>regular=</b><i>n</i>
if <i>n</i> is non-zero then the polygon is made regular, i.e.
symmetric about the x and y axis, otherwise the polygon takes on
the aspect ratio of the label. <i>builtin_polygons</i> that are not
already regular are made regular by this attribute.
<i>builtin_polygons</i> that are already regular are not affected
(i.e. they cannot be made asymmetric).</p>
<p style="margin-left:11%; margin-top: 1em">
<b>peripheries=</b><i>n</i> sets the number of periphery lines
drawn around the polygon. This value supersedes the number of
periphery lines of <i>builtin_polygons</i>.</p>
<p style="margin-left:11%; margin-top: 1em"><b>sides=</b><i>n</i>
sets the number of sides to the polygon. <i>n</i><3 results in
an ellipse. This attribute is ignored by
<i>builtin_polygons</i>.</p>
<p style="margin-left:11%; margin-top: 1em">
<b>orientation=</b><i>f</i> sets the orientation of the first apex
of the polygon counterclockwise from the vertical, in degrees.
<i>f</i> may be a floating point number. The orientation of labels
is not affected by this attribute. This attribute is added to the
initial orientation of <i>builtin_polygons.</i></p>
<p style="margin-left:11%; margin-top: 1em">
<b>distortion=</b><i>f</i> sets the amount of broadening of the top
and narrowing of the bottom of the polygon (relative to its
orientation). Floating point values between -1 and +1 are
suggested. This attribute is ignored by
<i>builtin_polygons</i>.</p>
<p style="margin-left:11%; margin-top: 1em"><b>skew=</b><i>f</i>
sets the amount of right-displacement of the top and
left-displacement of the bottom of the polygon (relative to its
orientation). Floating point values between -1 and +1 are
suggested. This attribute is ignored by
<i>builtin_polygons</i>.</p>
<p style="margin-left:11%; margin-top: 1em"><b>(circo-specific
attributes)<br>
root=</b><i>true/false</i>. This specifies that the block
containing the given node be treated as the root of the spanning
tree in the layout.</p>
<p style="margin-left:11%; margin-top: 1em"><b>(neato- and
fdp-specific attributes)<br>
pin=</b><i>val</i>. If <i>val</i> is <b>true</b>, the node will
remain at its initial position.</p>
<h2>Edge Attributes <a name="Edge Attributes"></a></h2>
<p style="margin-left:11%; margin-top: 1em">
<b>weight=</b><i>val</i> where <i>val</i> is the cost of the edge.
For <b>dot</b>, weights must be non-negative integers. Values
greater than 1 tend to shorten the edge; weight 0 flat edges are
ignored for ordering nodes. In <b>twopi</b>, a weight of 0 will
cause the edge to be ignored in constructing the underlying
spanning tree. For <b>neato</b> and <b>fdp</b>, a heavier weight
will put more emphasis on the algorithm achieving an edge length
closer to that specified by the edge’s <b>len</b> attribute.</p>
<p style="margin-left:11%; margin-top: 1em"><b>style=solid dashed
dotted bold invis</b></p>
<p style="margin-left:11%; margin-top: 1em">
<b>color=</b><i>colorvalue</i> sets the line color for edges.</p>
<p style="margin-left:11%; margin-top: 1em">
<b>color=</b><i>colorvaluelist</i> a ’:’ separated list of
<i>colorvalue</i> creates parallel edges, one edge for each
color.</p>
<p style="margin-left:11%; margin-top: 1em"><b>dir=forward back
both none</b> controls arrow direction.</p>
<p style="margin-left:11%; margin-top: 1em">
<b>tailclip,headclip=false</b> disables endpoint shape
clipping.</p>
<p style="margin-left:11%; margin-top: 1em">
<b>target=</b><i>"text"</i> is a target string for client-side
imagemaps and SVG, effective when edges have a URL. If the target
string is empty, the default, then no target attribute is included
in the output. The substrings ’\T’, ’\H’, ’\E’ and ’\G’ are
substituted in the same manner as for the edge label attribute.
Additionally the substring ’\L’ is substituted with the edge label
string.</p>
<p style="margin-left:11%; margin-top: 1em">
<b>tooltip=</b><i>"text"</i> is a tooltip string for client-side
imagemaps effective when edges have a URL. The tooltip string
defaults to be the same as the edge label string. The substrings
’\T’, ’\H’, ’\E’ and ’\G’ are substituted in the same manner as for
the edge label attribute. Additionally the substring ’\L’ is
substituted with the edge label string.</p>
<p style="margin-left:11%; margin-top: 1em">
<b>arrowhead,arrowtail=none, normal, inv, dot, odot, invdot,
invodot, tee, empty, invempty, open, halfopen, diamond, odiamond,
box, obox, crow</b>. Specifies the shape of the glyph occurring
where the edge touches the head or tail node, respectively. Note
that this only specifies the shape. The <b>dir</b> attribute
determines whether or not the glyph is drawn.</p>
<p style="margin-left:11%; margin-top: 1em">
<b>arrowsize=</b><i>val</i> specifies a multiplicative scale factor
for the size of the arrowhead.
inv_length=6,inv_width=7,dot_radius=2)</p>
<p style="margin-left:11%; margin-top: 1em">
<b>headlabel,taillabel=</b><i>text</i> for labels appearing near
the head and tail nodes of an edge. <b>labelfontcolor</b>,
<b>labelfontname</b>, <b>labelfontsize</b> for head and tail
labels. The substrings ’\T’, ’\H’, ’\E’ and ’\G’ are substituted in
the same manner as for the edge label attribute. Additionally the
substring ’\L’ is substituted with the edge label string.</p>
<p style="margin-left:11%; margin-top: 1em">
<b>headhref=</b><i>"url"</i> sets the url for the head port in
imagemap, PostScript and SVG files. The substrings ’\T’, ’\H’, ’\E’
and ’\G’ are substituted in the same manner as for the edge label
attribute. Additionally the substring ’\L’ is substituted with the
edge label string.</p>
<p style="margin-left:11%; margin-top: 1em">
<b>headURL=</b><i>"url"</i> (<b>headURL</b> is a synonym for
<b>headhref</b>.)</p>
<p style="margin-left:11%; margin-top: 1em">
<b>headtarget=</b><i>"headtarget"</i> is a target string for
client-side imagemaps and SVG, effective when edge heads have a
URL. The headtarget string is used to determine which window of the
browser is used for the URL. If the headtarget string is empty, the
default, then headtarget defaults to the same value as target for
the edge. The substrings ’\T’, ’\H’, ’\E’ and ’\G’ are substituted
in the same manner as for the edge label attribute. Additionally
the substring ’\L’ is substituted with the edge label string.</p>
<p style="margin-left:11%; margin-top: 1em">
<b>headtooltip=</b><i>"tooltip"</i> is a tooltip string for
client-side imagemaps effective when head ports have a URL. The
tooltip string defaults to be the same as the headlabel string. The
substrings ’\T’, ’\H’, and ’\E’ are substituted in the same manner
as for the edge label attribute. Additionally the substring ’\L’ is
substituted with the edge label string.</p>
<p style="margin-left:11%; margin-top: 1em">
<b>tailhref=</b><i>"url"</i> sets the url for the tail port in
imagemap, PostScript and SVG files. The substrings ’\T’, ’\H’, ’\E’
and ’\G’ are substituted in the same manner as for the edge label
attribute. Additionally the substring ’\L’ is substituted with the
edge label string.</p>
<p style="margin-left:11%; margin-top: 1em">
<b>tailURL=</b><i>"url"</i> (<b>tailURL</b> is a synonym for
<b>tailhref</b>.)</p>
<p style="margin-left:11%; margin-top: 1em">
<b>tailtarget=</b><i>"tailtarget"</i> is a target string for
client-side imagemaps and SVG, effective when edge tails have a
URL. The tailtarget string is used to determine which window of the
browser is used for the URL. If the tailtarget string is empty, the
default, then tailtarget defaults to the same value as target for
the edge. The substrings ’\T’, ’\H’, ’\E’ and ’\G’ are substituted
in the same manner as for the edge label attribute. Additionally
the substring ’\L’ is substituted with the edge label string.</p>
<p style="margin-left:11%; margin-top: 1em">
<b>tailtooltip=</b><i>"tooltip"</i> is a tooltip string for
client-side imagemaps effective when tail ports have a URL. The
tooltip string defaults to be the same as the taillabel string. The
substrings ’\T’, ’\H’, ’\E’ and ’\G’ are substituted in the same
manner as for the edge label attribute. Additionally the substring
’\L’ is substituted with the edge label string.</p>
<p style="margin-left:11%; margin-top: 1em"><b>labeldistance</b>
and <b>labelangle</b> (in degrees CCW) specify the placement of
head and tail labels.</p>
<p style="margin-left:11%; margin-top: 1em"><b>decorate</b> draws
line from edge to label.</p>
<p style="margin-left:11%; margin-top: 1em">
<b>samehead,sametail</b> aim edges having the same value to the
same port, using the average landing point.</p>
<p style="margin-left:11%; margin-top: 1em"><b>(dot-specific
attributes)<br>
constraint=false</b> causes an edge to be ignored for rank
assignment.</p>
<p style="margin-left:11%; margin-top: 1em"><b>minlen=</b><i>n</i>
where <i>n</i> is an integer factor that applies to the edge length
(ranks for normal edges, or minimum node separation for flat
edges).</p>
<p style="margin-left:11%; margin-top: 1em">
<b>xlabel=</b><i>"text"</i> Edge labels in <b>dot</b> are treated
as special types of nodes, with space allocated for them during
node layout. This can sometimes deform the edge routing. If an
<b>xlabel</b> is used instead, the label is placed after all nodes
and edges have been positioned. In turn, this may mean that there
is some overlap among the labels.</p>
<p style="margin-left:11%; margin-top: 1em"><b>(neato and
fdp-specific attributes)<br>
len=</b><i>f</i> sets the optimal length of an edge. The default is
1.0.</p>
<h2>COMMAND-LINE OPTIONS <a name="COMMAND-LINE OPTIONS"></a></h2>
<p style="margin-left:11%; margin-top: 1em"><b>-G</b> sets a
default graph attribute. <b><br>
-N</b> sets a default node attribute. <b><br>
-E</b> sets a default edge attribute. Example: <b>-Gsize="7,8"
-Nshape=box -Efontsize=8</b></p>
<p style="margin-left:11%; margin-top: 1em"><b>-l</b><i>file</i>
loads custom PostScript library files. Usually these define custom
shapes or styles. If <b>-l</b> is given by itself, the standard
library is omitted.</p>
<p style="margin-left:11%; margin-top: 1em"><b>-T</b><i>lang</i>
sets the output language as described above.</p>
<p style="margin-left:11%; margin-top: 1em">
<b>-n</b>[<b>1</b>|<b>2</b>] (no-op) If set, neato assumes nodes
have already been positioned and all nodes have a pos attribute
giving the positions. It then performs an optional adjustment to
remove node-node overlap, depending on the value of the overlap
attribute, computes the edge layouts, depending on the value of the
<b>splines</b> attribute, and emits the graph in the appropriate
format. If num is supplied, the following actions occur:<br>
num = 1<br>
Equivalent to -n.<br>
num > 1<br>
Use node positions as specified, with no adjustment to remove
node-node overlaps, and use any edge layouts already specified by
the pos attribute. neato computes an edge layout for any edge that
does not have a <b>pos</b> attribute. As usual, edge layout is
guided by the <b>splines</b> attribute.</p>
<p style="margin-left:11%; margin-top: 1em"><b>-K</b><i>layout</i>
override the default layout engine implied by the command name.</p>
<p style="margin-left:11%; margin-top: 1em"><b>-O</b> automatically
generate output filenames based on the input filename and the -T
format.</p>
<p style="margin-left:11%; margin-top: 1em"><b>-P</b> generate a
graph of the currently available plugins.</p>
<p style="margin-left:11%; margin-top: 1em"><b>-v</b> (verbose)
prints various information useful for debugging.</p>
<p style="margin-left:11%; margin-top: 1em"><b>-c</b> configure
plugins.</p>
<p style="margin-left:11%; margin-top: 1em"><b>-m</b> memory test
(observe no growth with top, kill when done).</p>
<p style="margin-left:11%; margin-top: 1em"><b>-q</b><i>level</i>
set level of message suppression. The default is 1.</p>
<p style="margin-left:11%; margin-top: 1em"><b>-s</b><i>fscale</i>
scale input by <i>fscale</i>, the default is 72.</p>
<p style="margin-left:11%; margin-top: 1em"><b>-y</b> invert y
coordinate in output.</p>
<p style="margin-left:11%; margin-top: 1em"><b>-V</b> (version)
prints version information and exits.</p>
<p style="margin-left:11%; margin-top: 1em"><b>-?</b> prints the
usage and exits.</p>
<p style="margin-left:11%; margin-top: 1em">A complete description
of the available command-line options can be found at
http://www.graphviz.org/content/command-line-invocation.</p>
<h2>EXAMPLES <a name="EXAMPLES" id="EXAMPLES"></a></h2>
<p style="margin-left:11%; margin-top: 1em">digraph test123 {<br>
a -> b -> c;<br>
a -> {x y};<br>
b [shape=box];<br>
c [label="hello\nworld",color=blue,fontsize=24,<br>
fontname="Palatino-Italic",fontcolor=red,style=filled];<br>
a -> z [label="hi", weight=100];<br>
x -> z [label="multi-line\nlabel"];<br>
edge [style=dashed,color=red];<br>
b -> x;<br>
{rank=same; b x}<br>
}</p>
<p style="margin-left:11%; margin-top: 1em">graph test123 {<br>
a -- b -- c;<br>
a -- {x y};<br>
x -- c [w=10.0];<br>
x -- y [w=5.0,len=3];<br>
}</p>
<h2>CAVEATS <a name="CAVEATS" id="CAVEATS"></a></h2>
<p style="margin-left:11%; margin-top: 1em">Edge splines can
overlap unintentionally.</p>
<p style="margin-left:11%; margin-top: 1em">Flat edge labels are
slightly broken. Intercluster edge labels are totally broken.</p>
<p style="margin-left:11%; margin-top: 1em">Because unconstrained
optimization is employed, node boxes can possibly overlap or touch
unrelated edges. All existing spring embedders seem to have this
limitation.</p>
<p style="margin-left:11%; margin-top: 1em">Apparently reasonable
attempts to pin nodes or adjust edge lengths and weights can cause
instability.</p>
<h2>AUTHORS <a name="AUTHORS" id="AUTHORS"></a></h2>
<p style="margin-left:11%; margin-top: 1em">Stephen C. North
<north@research.att.com><br>
Emden R. Gansner <erg@graphviz.org><br>
John C. Ellson <ellson@research.att.com><br>
Yifan Hu <yifanhu@yahoo.com></p>
<p style="margin-left:11%; margin-top: 1em">The bitmap driver (PNG,
GIF etc) is by Thomas Boutell,
<http://www.boutell.com/gd></p>
<p style="margin-left:11%; margin-top: 1em">The Truetype font
renderer is from the Freetype Project (David Turner, Robert
Wilhelm, and Werner Lemberg) (who can be contacted at
freetype-devel@lists.lrz-muenchen.de).</p>
<h2>SEE ALSO <a name="SEE ALSO"></a></h2>
<p style="margin-left:11%; margin-top: 1em">This man page contains
only a small amount of the information related to the Graphviz
layout programs. The most complete information can be found at
http://www.graphviz.org/Documentation.php, especially in the
on-line reference pages. Most of these documents are also available
in the <i>doc</i> and <i>doc/info</i> subtrees in the source and
binary distributions.</p>
<p style="margin-left:11%; margin-top: 1em">
<b>dotty</b>(1),<b>tcldot</b>(n),<b>xcolors</b>(1),<b>libgraph</b>(3).</p>
<p style="margin-left:11%; margin-top: 1em">E. R. Gansner, S. C.
North, K. P. Vo, "DAG - A Program to Draw Directed Graphs",
Software - Practice and Experience 17(1), 1988, pp. 1047-1062.<br>
E. R. Gansner, E. Koutsofios, S. C. North, K. P. Vo, "A Technique
for Drawing Directed Graphs," IEEE Trans. on Soft. Eng. 19(3),
1993, pp. 214-230.<br>
S. North and E. Koutsofios, "Applications of graph visualization",
Graphics Interface 94, pp. 234-245.<br>
E. R. Gansner and E. Koutsofios and S. C. North, "Drawing Graphs
with dot," Available at
http://www.graphviz.org/pdf/dotguide.pdf.<br>
S. C. North, "NEATO User’s Manual". Available
http://www.graphviz.org/pdf/neatoguide.pdf.<br>
E. R. Gansner and Y. Hu, "Efficient, Proximity-Preserving Node
Overlap Removal", J. Graph Algorithms Appl., 14(1) pp. 53-74,
2010.</p>
<hr>
</body>
</html>