From: erg Date: Tue, 15 Apr 2008 17:20:25 +0000 (+0000) Subject: Add source for info pages to CVS X-Git-Tag: LAST_LIBGRAPH~32^2~4318 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fdbb43902df5c541b8d57c4599a0913e80587f58;p=graphviz Add source for info pages to CVS --- diff --git a/doc/infosrc/arrows.2 b/doc/infosrc/arrows.2 new file mode 100644 index 000000000..470a98dd1 --- /dev/null +++ b/doc/infosrc/arrows.2 @@ -0,0 +1,75 @@ + +

+The primitive shapes are: +

+ + + + + + + +
"box" + "crow" + "diamond" +
"dot" + "inv" + "none" +
"normal" + "tee" + "vee" +
+
+

+As for the modifiers: +

+
'l' +
Clip the shape, leaving only the part to the left of the edge. +
'r' +
Clip the shape, leaving only the part to the right of the edge. +
'o' +
Use an open (non-filled) version of the shape. +
+Left and right are defined as those directions determined by looking +from the edge towards the point where the arrow "touches" the node. +

+As an example, the arrow shape lteeoldiamond is parsed as +'l' 'tee' 'o' 'l' 'diamond' and corresponds to the shape +

+ +
+Note that the first arrow shape specified occurs closest to the node. +The second arrow shape, if provided, occurs further from the node. +

+Not all syntactically legal combinations of modifiers are meaningful +or semantically valid. +For example, none of the modifiers make any sense with none. +The following table indicates which modifiers are allowed with which shapes. +

+

+ + + + + + +
Modifierbox + crow + diamond + dot + inv + none + normal + tee + vee +
'l'/'r'XXX X XXX
'o' X XXX X  
+
+

+This yields 36 different arrow shapes. The optional second shape +can independently be any of the 36, but since nonenone +is redundant, there are 36 * 35 = 1260 different combinations. +

+The following display contains the 36 combinations possible with a single +arrow shape. The node attached to the arrow is not drawn but would appear +on the right side of the edge. +

diff --git a/doc/infosrc/attrs b/doc/infosrc/attrs new file mode 100644 index 000000000..c5cb2abc8 --- /dev/null +++ b/doc/infosrc/attrs @@ -0,0 +1,1031 @@ +# Graphviz attributes +# Each item consist of a header line, followed by a description in HTML. +# +# The header line has the format +# :name:uses:kind[:dflt[:minv]]; [notes] +# where +# name has the format name1[/namei]*[ notes] +# the note can be used as a comment +# +# uses is a string consisting of G,C,N,E, indicating that the attribute +# applies to graphs, clusters, nodes and edges, respectively. +# +# kind has the format type[/typei]* +# type can be int, bool, string, double, or a special . +# In the last case, we assume there is an entry for in +# the types file. +# +# dflt has the format dflt[/dflti]* +# dflt gives a description of the default value of the attribute. +# It can contain arbitrary text but ':' must be preceded by a space. +# +# minv has the format min[/mini]* +# minv gives a description of the minimum value of the attribute. +# It can contain arbitrary text. +# +# the notes field, if present, consists of a comma-separated list of: +# +# bitmap cmap map ps svg - attribute limited to specified output formats +# dot neato twopi circo fdp - attribute limited to specified layouts +# notdot - attribute use in all layouts but dot +# write - attribute is write-only +# obsolete - attribute is obsolete +# +# Obviously, for any field which allows multiple subfields separated by '/' +# the subfields cannot contain the '/' character. +# +# In the summary table, attributes are anchored with a:. +# In the description list, attributes are anchored with d:. +# There can be more than one item with the same name. +# The attributes are alphabetized on output. +# +# The current program generating HTML is a shell script. This should +# cause no problems except with '\', which may require some number of +# escaping '\' to get the right final output. +# +:Damping:G:double:0.99:0.0; neato +Factor damping force motions. On each iteration, a nodes movement +is limited to this factor of its potential motion. By being less than +1.0, the system tends to ``cool'', thereby preventing cycling. +#:Nodefactor:G:double:1.0; +# Set by attribute, overwritten, unused +#:Nodesep:G:double:1.0; +# Set by attribute, overwritten, unused +:URL:ENGC:lblString:; map,ps,svg +Hyperlinks incorporated into device-dependent output. +At present, used in ps2, cmap, i*map and svg formats. +For all these formats, URLs can be attached to nodes, edges and +clusters. URL attributes can also be attached to the root graph in ps2, +cmap and i*map formats. This serves as the base URL for relative URLs in the +former, and as the default image map file in the latter. +

+For svg, cmapx and imap output, the active area for a node is its +visible image. +For example, an unfilled +node with no drawn boundary will only be active on its label. +For other output, the active area is its bounding box. +The active area for a cluster is its bounding box. +For edges, the active areas are small circles where the edge contacts its head +and tail nodes. In addition, for svg, cmapx and imap, the active area +includes a thin polygon approximating the edge. The circles may +overlap the related node, and the edge URL dominates. +If the edge has a label, this will also be active. +Finally, if the edge has a head or tail label, this will also be active. +

+Note that, for edges, the attributes headURL, +tailURL, labelURL and +edgeURL allow control of various parts of an +edge. +Also note that, if active areas of two edges overlap, it is unspecified +which area dominates. +:arrowhead:E:arrowType:normal; +Style of arrowhead on the head node of an edge. +See also the dir attribute, +and a limitation. +:arrowsize (E_arrowsz):E:double:1.0:0.0; +Multiplicative scale factor for arrowheads. +:arrowtail:E:arrowType:normal; +Style of arrowhead on the tail node of an edge. +See also the dir attribute, +and a limitation. +:bb:G:rect; write +Bounding box of drawing in integer points. +:bgcolor:GC:color:; +When attached to the root graph, this color is used as the background for +entire canvas. When a cluster attribute, it is used as the initial +background for the cluster. If a cluster has a filled +style, the +cluster's fillcolor will overlay the +background color. +

+If no background color is specified for the root graph, no graphics +operation are performed on the background. This works fine for +PostScript but for bitmap output, all bits are initialized to something. +This means that when the bitmap output is included in some other +document, all of the bits within the bitmap's bounding box will be +set, overwriting whatever color or graphics where already on the page. +If this effect is not desired, and you only want to set bits explicitly +assigned in drawing the graph, set bgcolor="transparent". +#bottomlabel:N:string:""; +# Additional label near bottom of nodes of shape M*. +:center:G:bool:false; +If true, the drawing is centered in the output canvas. +:charset:G:string:"UTF-8"; +Specifies the character encoding used when interpreting string input +as a text label. The default value is "UTF-8". +The other legal value is "iso-8859-1" or, +equivalently, +"Latin1". The charset attribute is case-insensitive. +Note that if the character encoding used in the input does not +match the charset value, the resulting output may be very strange. +:clusterrank:G:clusterMode:local; dot +Mode used for handling clusters. If clusterrank is "local", a +subgraph whose name begins with "cluster" is given special treatment. +The subgraph is laid out separately, and then integrated as a unit into +its parent graph, with a bounding rectangle drawn about it. +If the cluster has a label parameter, this label +is displayed within the rectangle. +Note also that there can be clusters within clusters. +At present, the modes "global" and "none" +appear to be identical, both turning off the special cluster processing. +:color:ENC:color/colorList:black; +Basic drawing color for graphics, not text. For the latter, use the +fontcolor attribute. +

+For edges, the value +can either be a single color or a colorList. +In the latter case, the edge is drawn using parallel splines or lines, +one for each color in the list, in the order given. +The head arrow, if any, is drawn using the first color in the list, +and the tail arrow, if any, the second color. This supports the common +case of drawing opposing edges, but using parallel splines instead of +separately routed multiedges. For example, the graph +

+digraph G {
+  a -> b [dir=both color="red:blue"]
+}
+
+yields
+ +:colorscheme:ENCG:string:""; +This attribute specifies a color scheme namespace. If defined, it specifies +the context for interpreting color names. In particular, if a +color value has form "xxx" or "//xxx", +then the +color xxx will be evaluated according to the current color scheme. +If no color scheme is set, the standard X11 naming is used. +For example, if colorscheme=bugn9, then color=7 +is interpreted as "/bugn9/7". +:comment:ENG:string:""; +Comments are inserted into output. Device-dependent +:compound:G:bool:false; dot +If true, allow edges between clusters. (See lhead +and ltail below.) +:concentrate:G:bool:false; dot +If true, use edge concentrators. +:constraint (E_constr):E:bool:true; dot +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:
+ +:defaultdist:G:double:1+(avg. len)*sqrt(|V|):epsilon; neato +This specifies the distance between nodes in separate connected +components. If set too small, connected components may overlap. +Only applicable if pack=false. +:decorate:E:bool:false; +If true, attach edge label to edge by a 2-segment +polyline, underlining the label, then going to the closest point of spline. +:dim:G:int:2:2; neato,fdp +Set the number of dimensions used for the layout. The maximum value +allowed is 10. +:dir:E:dirType:forward(directed)/none(undirected); +Set edge type for drawing arrowheads. This indicates which ends of the +edge should be decorated with an arrowhead. The actual style of the +arrowhead can be specified using the arrowhead +and arrowtail attributes. +See limitation. +:diredgeconstraints:G:string/bool:false; neato +Only valid when mode="ipsep". +If true, constraints are generated for each edge in the largest (heuristic) +directed acyclic subgraph such that the edge must point downwards. +If "hier", generates level constraints similar to those used with +mode="hier". The main difference is that, in the latter +case, only these constraints are involved, so a faster solver can be used. +:distortion:N:double:0.0:-100.0; +Distortion factor for shape=polygon. +Positive values cause top part to +be larger than bottom; negative values do the opposite. +:dpi:G:double:96.0/0.0; bitmap,svg +This specifies the expected number of pixels per inch on a display device. +For bitmap output, this guarantees that text rendering will be +done more accurately, both in size and in placement. For SVG output, +it is used to guarantee that the dimensions in the output correspond to +the correct number of points or inches. +:edgeURL:E:lblString:""; map,svg +If edgeURL is defined, this is the link used for the non-label +parts of an edge. This value overrides any URL +defined for the edge. +Also, this value is used near the head or tail node unless overridden +by a headURL or tailURL value, +respectively. +See limitation. +:edgehref:E:lblString:""; map,svg +Synonym for edgeURL. +:edgetarget:E:escString:; map,svg +If the edge has a URL or edgeURL +attribute, this attribute determines which window of the +browser is used +for the URL attached to the non-label part of the edge. +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. +:edgetooltip:E:escString:""; cmap,svg +Tooltip annotation attached to the non-label part of an edge. +This is used only if the edge has a URL +or edgeURL attribute. +:epsilon:G:double:.0001 * # nodes(mode == KK)/.0001(mode == major); neato +Terminating condition. If the length squared of all energy gradients are +< epsilon, the algorithm stops. +:esep:G:double/pointf:+3; notdot +Margin used around polygons for purposes of spline edge routing. +The interpretation is the same as given for sep. +This should normally be strictly less than sep. +:fillcolor:NC:color:lightgrey(nodes)/black(clusters); +Color used to fill the background of a node or cluster +assuming style=filled. +If fillcolor is not defined, color is +used. (For clusters, if color is not defined, +bgcolor is used.) If this is not defined, +the default is used, except for +shape=point or when the output +format is MIF, +which use black by default. +

+Note that a cluster inherits the root graph's attributes if defined. +Thus, if the root graph has defined a fillcolor, this will override a +color or bgcolor attribute set for the cluster. +:fixedsize (N_fixed):N:bool:false; +If true, the node size is specified by the values of the +width +and height attributes only +and is not expanded to contain the text label. +:fontcolor:ENGC:color:black; +Color used for text. +:fontnames:G:string:""; svg +Allows user control of how basic fontnames are represented in SVG output. +If fontnames is undefined or "svg", +the output will try to use known SVG fontnames. For example, the +default font "Times-Roman" will be mapped to the +basic SVG font "serif". This can be overridden by setting +fontnames to "ps" or "gd". +In the former case, known PostScript font names such as +"Times-Roman" will be used in the output. +In the latter case, the fontconfig font conventions +are used. Thus, "Times-Roman" would be treated as +"Nimbus Roman No9 L". These last two options are useful +with SVG viewers that support these richer fontname spaces. +:fontname:ENGC:string:"Times-Roman"; +Font used for text. This very much depends on the output format and, for +non-bitmap output such as PostScript or SVG, the availability of the font +when the graph is displayed or printed. As such, it is best to rely on +font faces that are generally available, such as Times-Roman, Helvetica or +Courier. +

+If Graphviz was built using the +fontconfig library, the latter library +will be used to search for the font. However, if the fontname string +contains a slash character "/", it is treated as a pathname for the font +file, though font lookup will append the usual font suffixes. +

+If Graphviz does not use fontconfig, fontname will be +considered the name of a Type 1 or True Type font file. +If you specify fontname=schlbk, the tool will look for a +file named schlbk.ttf or schlbk.pfa or schlbk.pfb +in one of the directories specified by +the fontpath attribute. +The lookup does support various aliases for the common fonts. +:fontpath:G:string:system-dependent; +Directory list used by libgd to search for bitmap fonts if Graphviz +was not built with the fontconfig library. +If fontpath is not set, the environment +variable DOTFONTPATH is checked. +If that is not set, GDFONTPATH is checked. +If not set, libgd uses its compiled-in font path. +Note that fontpath is an attribute of the root graph. +:fontsize:ENGC:double:14.0:1.0; +Font size, in points, used for text. +:group:N:string:""; dot +If the end points of an edge belong to the same group, i.e., have the +same group attribute, parameters are set to avoid crossings and keep +the edges straight. +:headURL:E:lblString:""; map,svg +If headURL is defined, it is +output as part of the head label of the edge. +Also, this value is used near the head node, overriding any +URL value. +See limitation. +:headclip:E:bool:true; +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. +:headhref:E:lblString:""; map,svg +Synonym for headURL. +:headlabel:E:lblString:""; +Text label to be placed near head of edge. +See limitation. +:headport:E:portPos:center; +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. +:headtarget:E:escString:; map,svg +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. +:headtooltip:E:escString:""; cmap,svg +Tooltip annotation attached to the head of an edge. This is used only +if the edge has a headURL attribute. +:height:N:double:0.5:0.02; +Height of node, in inches. This is taken as the initial, minimum height +of the node. If fixedsize is true, this +will be the final height of the node. Otherwise, if the node label +requires more height to fit, the node's height will be increased to +contain the label. Note also that, if the output format is dot, the +value given to height will be the final value. +:href:E:lblString:""; map,ps,svg +Synonym for URL. +:image:N:string:""; +Gives the name of a file containing an image to be displayed inside +a node. The image file must be in one of the recognized formats, +typically JPEG, PNG, GIF or Postscript, and be able to be converted +into the desired output format. +

+Unlike with the shapefile attribute, +the image is treated as node +content rather than the entire node. In particular, an image can +be contained in a node of any shape, not just a rectangle. +:imagescale:N:bool/string:false:; +Attribute controlling how an image fills its +containing node. In general, the image is given its natural size, +(cf. dpi), +and the node size is made large enough to contain its image, its +label, its margin, and its peripheries. +Its width and height will also be at least as large as its +minimum width and height. +If, however, fixedsize=true, +the width and height attributes specify the exact size of the node. +

+During rendering, in the default case (imagescale=false), +the image retains its natural size. +If imagescale=true, +the image is uniformly scaled (i.e., its aspect ration is +preserved) to fit inside the node. +At least one dimension of the image will be as large as possible +given the size of the node. +When imagescale=width, +the width of the image is scaled to fill the node width. +The corresponding property holds when imagescale=height. +When imagescale=both, +both the height and the width are scaled separately to fill the node. +

+In all cases, if a dimension of the image is larger than the +corresponding dimension of the node, that dimension of the +image is scaled down to fit the node. As with the case of +expansion, if imagescale=true, width and height are +scaled uniformly. +:K:GC:double:0.3:0; fdp +Spring constant used in virtual physical model. It roughly corresponds +to an ideal edge length (in inches), in that increasing K tends to +increase the distance between nodes. +Note that the edge attribute len can be used to +override this value for adjacent nodes. +:label:ENGC:lblString:"\\\\N" (nodes)/"" (otherwise); +Text label attached to objects. +If a node's shape is record, then the label can +have a special format +which describes the record layout. +:labelURL:E:lblString:""; map,svg +If labelURL is defined, this is the link used for the label +of an edge. This value overrides any URL +defined for the edge. +:labelangle:E:double:-25.0:-180.0; +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. +:labeldistance:E:double:1.0:0.0; +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. +:labelfloat (E_label_float):E:bool:false; +If true, allows edge labels to be less constrained in position. +In particular, it may appear on top of other edges. +:labelfontcolor:E:color:black; +Color used for headlabel and taillabel. +If not set, defaults to edge's fontcolor. +:labelfontname:E:string:"Times-Roman"; +Font used for headlabel and taillabel. +If not set, defaults to edge's fontname. +:labelfontsize:E:double:14.0:1.0; +Font size, in points, used for headlabel and taillabel. +If not set, defaults to edge's fontsize. +:labelhref:E:lblString:""; map,svg +Synonym for labelURL. +:labeljust:GC:string:"c"; +Justification for cluster labels. If "r", the label +is right-justified within bounding rectangle; if "l", left-justified; +else the label is centered. +Note that a subgraph inherits attributes from its parent. Thus, if +the root graph sets labeljust to "l", the subgraph inherits +this value. +:labelloc:GC:string:"t"(clusters)/"b"(root graphs); +Top/bottom placement of graph and cluster labels. +If the attribute is "t", place label at the top; +if the attribute is "b", place label at the bottom. +By default, root +graph labels go on the bottom and cluster labels go on the top. +Note that a subgraph inherits attributes from its parent. Thus, if +the root graph sets labelloc to "b", the subgraph inherits +this value. +:labelloc:N:string:"c"(clusters); +Vertical placement of node label. By default, if the height of a node +is larger than the height of its label, the label is vertically centered. +If labelloc is set to "t", "c", or "b", the label is aligned +with the top, centered, or aligned with the bottom of the node, respectively. +:labeltarget:E:escString:; map,svg +If the edge has a URL or labelURL +attribute, this attribute determines which window of the +browser is used +for the URL attached to the label. +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. +:labeltooltip:E:escString:""; cmap,svg +Tooltip annotation attached to label of an edge. +This is used only if the edge has a URL +or labelURL attribute. +:landscape:G:bool:false; +If true, the graph is rendered in landscape mode. Synonymous with +rotate=90 or +orientation=landscape. +:layer:EN:layerRange:""; +Specifies layers in which the node or edge is present. +:layers:G:layerList:""; +Specifies a linearly ordered list of layer names attached to the graph +The graph is then output in separate layers. Only those components +belonging to the current output layer appear. For more information, +see the page How to use drawing layers (overlays). +:layersep:G:string:" :\\\\t"; +Specifies the separator characters used to split the +layers attribute into a list of layer names. +:len:E:double:1.0(neato)/0.3(fdp); neato,fdp +Preferred edge length, in inches. +:levelsgap:G:double:0.0; neato +Specifies strictness of level constraints in neato +when mode="ipsep" or "hier". +Larger positive values mean stricter constraints, which demand more +separation between levels. On the other hand, negative values will relax +the constraints by allowing some overlap between the levels. +:lhead:E:string:""; dot +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. +:lp:EGC:point; write +Label position, in points. +The position indicates the center of the label. +:ltail:E:string:""; dot +Logical tail of an edge. When compound is true, +if ltail is defined and is the name of a cluster +containing the real tail, +the edge is clipped to the boundary of the cluster. +See limitation. +:margin:NG:double/pointf:; +For graphs, this sets x and y margins of canvas, in inches. If the margin +is a single double, both margins are set equal to the given value. +

+Note that the margin is not part of the drawing but just empty space +left around the drawing. It basically corresponds to a translation of +drawing, as would be necessary to center a drawing on a page. Nothing +is actually drawn in the margin. To actually extend the background of +a drawing, see the pad attribute. +

+For nodes, this attribute specifies space left around the node's label. +By default, the value is 0.11,0.055. +:maxiter:G:int:100 \\* # nodes(mode == KK)/200(mode == major)/600(fdp); neato,fdp +Sets the number of iterations used. +:mclimit:G:double:1.0; dot +Multiplicative scale factor used to alter the MinQuit (default = 8) +and MaxIter (default = 24) parameters used during crossing +minimization. These correspond to the +number of tries without improvement before quitting and the +maximum number of iterations in each pass. +:mindist:G:double:1.0:0.0; circo +Specifies the minimum separation between all nodes. +:minlen:E:int:1:0; dot +Minimum edge length (rank difference between head and tail). +:mode:G:string:"major"; neato +Technique for optimizing the layout. If mode is "major", +neato uses stress majorization. If mode is "KK", +neato uses a version of the gradient descent method. The only advantage +to the latter technique is that it is sometimes appreciably faster for +small (number of nodes < 100) graphs. A significant disadvantage is that +it may cycle. +

+There are two new, experimental modes in neato, "hier", which adds a top-down +directionality similar to the layout used in dot, and "ipsep", which +allows the graph to specify minimum vertical and horizontal distances +between nodes. (See the sep attribute.) +:model:G:string:"shortpath"; neato +This value specifies how the distance matrix is computed for the input +graph. The distance matrix specifies the ideal distance between every +pair of nodes. neato attemps to find a layout which best achieves +these distances. By default, it uses the length of the shortest path, +where the length of each edge is given by its len +attribute. If model is "circuit", neato uses the +circuit resistance +model to compute the distances. This tends to emphasize clusters. If +model is "subset", neato uses the subset model. This sets the +edge length to be the number of nodes that are neighbors of exactly one +of the end points, and then calculates the shortest paths. This helps +to separate nodes with high degree. +:mosek:G:bool:false; neato +If Graphviz is built with MOSEK defined, mode=ipsep and mosek=true, +the Mosek software (www.mosek.com) is use to solve the ipsep constraints. +:nodesep:G:double:0.25:0.02; dot +Minimum space between two adjacent nodes in the same rank, in inches. +:nojustify:GCNE:bool:false; +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. +:normalize:G:bool:false; notdot +If set, normalize coordinates of final +layout so that the first point is at the origin, and then rotate the +layout so that the first edge is horizontal. +:nslimit/nslimit1:G:double; dot +Used to set number of iterations in +network simplex applications. nslimit is used in +computing node x coordinates, nslimit1 for ranking nodes. +If defined, # iterations = nslimit(1) * # nodes; +otherwise, # iterations = MAXINT. +:ordering:G:string:""; dot +If "out" for a graph G, and n is a node in G, then edges n->* appear +left-to-right in the same order in which they are defined. +If "in", the edges *->n appear +left-to-right in the same order in which they are defined for all +nodes n. +:orientation:N:double:0.0:360.0; +Angle, in degrees, used to rotate node shapes. +:orientation:G:string:""; +If "[lL]*", set graph orientation to landscape +Used only if rotate is not defined. +:outputorder:G:outputMode:breadthfirst; +Specify order in which nodes and edges are drawn. +:overlap:G:string/bool:true; notdot +Determines if and how node overlaps should be removed. Nodes are first +enlarged using the sep attribute. +If "true" , overlaps are retained. +If the value is "scale", overlaps are removed by uniformly scaling in x and y. +If the value converts to "false", node overlaps are removed by a +Voronoi-based technique. +If the value is "scalexy", x and y are separately +scaled to remove overlaps. +If the value is "orthoxy" or "orthoyx", overlaps +are moved by optimizing two constraint problems, one for the x axis and +one for the y. The suffix indicates which axis is processed first. +If the value is "ortho", the technique is similar to "orthoxy" except a +heuristic is used to reduce the bias between the two passes. +If the value is "ortho_yx", the technique is the same as "ortho", except +the roles of x and y are reversed. +The values "portho", "porthoxy", "porthoxy", and "portho_yx" are similar +to the previous four, except only pseudo-orthogonal ordering is +enforced. +

+If the value is "compress", the layout will be scaled down as much as +possible without introducing any overlaps, obviously assuming there are +none to begin with. +

+If the value is "vpsc", overlap removal is similarly to "ortho", except +quadratic optimization is used to minimize node displacement. +

+If the layout is done by neato with mode="ipsep", +then one can use overlap=ipsep. +In this case, the overlap removal constraints are +incorporated into the layout algorithm itself. +N.B. At present, this only supports one level of clustering. +

+Except for fdp, the layouts assume overlap="true" as the default. +Fdp first uses a number of passes using built-in, force-directed technique +to remove overlaps. Thus, fdp accepts overlap with an integer +prefix followed by a colon, specifying the number of tries. If there is +no prefix, no initial tries will be performed. If there is nothing following +a colon, none of the above methods will be attempted. By default, fdp +uses overlap="9:portho". Note that overlap="true", +overlap="0:true" and overlap="0:" all turn off all overlap +removal. +

+Except for the Voronoi method, all of these transforms preserve the +orthogonal ordering of the original layout. That is, if the x coordinates +of two nodes are originally the same, they will remain the same, and if +the x coordinate of one node is originally less than the x coordinate of +another, this relation will still hold in the transformed layout. The +similar properties hold for the y coordinates. +This is not quite true for the "porth*" cases. For these, orthogonal +ordering is only preserved among nodes related by an edge. +

+NOTE: The methods "orthoxy" and "orthoyx" are still evolving. The +semantics of these may change, or these methods may disappear altogether. +:pack:G:bool/int:false; notdot +This is true if the value of pack is "true" (case-insensitive) or a +non-negative integer. If true, each connected component of the graph is +laid out separately, and then the graphs are packed tightly. +If pack has an integral value, this is used as the size, +in points, of +a margin around each part; otherwise, a default margin of 8 is used. +If pack is interpreted as false, the entire graph is laid out together. +The granularity and method of packing is influenced by the +packmode attribute. +

+For layouts which always do packing, such a twopi, the pack +attribute is just used to set the margin. +:packmode:G:packMode:node; notdot +This indicates the granularity and method used for packing +(cf. packMode). Note that defining +packmode will automatically turn on packing as though one had +set pack=true. +:pad:G:double/pointf:0.0555 (4 points); +The pad attribute specifies how much, in inches, to extend the +drawing area around the minimal area needed to draw the graph. +If the pad is a single double, both the x and y pad values are set +equal to the given value. This area is part of the +drawing and will be filled with the background color, if appropriate. +

+Normally, a small pad is used for aesthetic reasons, especially when +a background color is used, to avoid having nodes and edges abutting +the boundary of the drawn region. +:page:G:pointf; +Width and height of output pages, in inches. If this is set and is +smaller than the size of the layout, a rectangular array of pages of +the specified page size is overlaid on the layout, with origins +aligned in the lower-left corner, thereby partitioning the layout +into pages. The pages are then produced one at a time, in +pagedir order. +

+At present, this only works for PostScript output. For other types of +output, one should use another tool to split the output into multiple +output files. Or use the viewport to generate +multiple files. +:pagedir:G:pagedir:BL; +If the page attribute is set and applicable, +this attribute specifies the order in which the pages are emitted. +This is limited to one of the 8 row or column major orders. +:pencolor:C:color:black; +Color used to draw the bounding box around a cluster. +If pencolor is not defined, color is +used. If this is not defined, bgcolor is used. +If this is not defined, the default is used. +

+Note that a cluster inherits the root graph's attributes if defined. +Thus, if the root graph has defined a pencolor, this will override a +color or bgcolor attribute set for the cluster. +:penwidth:CNE:double:1.0:0.0; +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. +

+Previous to 31 January 2008, the effect of penwidth=W +was achieved by including setlinewidth(W) +as part of a style specification. +If both are used, penwidth will be used. +:peripheries:NC:int:shape default(nodes)/1(clusters):0; +Set number of peripheries used in polygonal shapes and cluster +boundaries. Note that +user-defined shapes are treated as a +form of box shape, so the default +peripheries value is 1 and the user-defined shape will be drawn in +a bounding rectangle. Setting peripheries=0 will turn this off. +Also, 1 is the maximum peripheries value for clusters. +:pin:N:bool:false; neato,fdp +If true and the node has a pos attribute on input, neato prevents the +node from moving from the input position. This property can also be specified +in the pos attribute itself (cf. the point type). +

+Note: Due to an artifact of the implementation, final coordinates +are translated to the origin. Thus, if you look at the output coordinates +given in the (x)dot or plain format, pinned nodes will not have the same +output coordinates as were given on input. If this is important, a +simple workaround is to maintain the coordinates of a pinned node. The vector +difference between the old and new coordinates will give the translation, +which can then be subtracted from all of the appropriate coordinates. +:pos:EN:point/splineType; +Position of node, or spline control points. +For nodes, the position indicates the center of the node. +On output, the coordinates are in points. +

+In neato and fdp, pos can be used to set the initial position of a node. +By default, the coordinates are assumed to be in inches. However, the +-s command line flag can be used to specify +different units. +

+When the -n command line flag is used with +neato, it is assumed the positions have been set by one of the layout +programs, and are therefore in points. Thus, neato -n can accept +input correctly without requiring a -s flag and, in fact, +ignores any such flag. +:quantum:G:double:0.0:0.0; +If quantum > 0.0, node label dimensions +will be rounded to integral multiples of the quantum. +:rank:S:rankType:; dot +Rank constraints on the nodes in a subgraph. +If rank="same", all nodes are placed on the same rank. +If rank="min", all nodes are placed on the minimum rank. +If rank="source", all nodes are placed on the minimum rank, and +the only nodes on the minimum rank belong to some subgraph whose +rank attribute is "source" or "min". +Analogous criteria hold for rank="max" and rank="sink". +(Note: the +minimum rank is topmost or leftmost, and the maximum rank is bottommost +or rightmost.) +:rankdir:G:rankdir:TB; dot +Sets direction of graph layout. For example, if rankdir="LR", +and barring cycles, an edge T -> H; will go +from left to right. By default, graphs are laid out from top to bottom. +

+This attribute also has a side-effect in determining how record nodes +are interpreted. See record shapes. +:ranksep:G:double:0.5(dot)/1.0(twopi):0.02; dot,twopi +In dot, this gives the desired rank separation, in inches. This is +the minimum vertical distance between the bottom of the nodes in one +rank and the tops of nodes in the next. If the value +contains "equally", the centers of all ranks are spaced equally apart. +Note that both +settings are possible, e.g., ranksep = "1.2 equally". +In twopi, specifies radial separation of concentric circles. +:ratio:G:double/string; +Sets the aspect ratio (drawing height/drawing width) for the drawing. +Note that this is adjusted before +the size attribute constraints are enforced. +

+If ratio is numeric, it is taken as the desired aspect ratio. +Then, if the actual aspect ratio is less than the desired ratio, +the drawing height is scaled up to achieve the +desired ratio; if the actual ratio is greater than that desired ratio, +the drawing width is scaled up. +

+If ratio = "fill" and the size +attribute is set, node positions are scaled, separately in both x +and y, so that the final drawing exactly fills the specified size. +

+If ratio = "compress" and the size +attribute is set, dot attempts to compress the initial layout to fit +in the given size. This achieves a tighter packing of nodes but +reduces the balance and symmetry. This feature only works in dot. +

+If ratio = "expand", the size +attribute is set, and both the width and the height of the graph are +less than the value in size, node positions are scaled +uniformly until at least +one dimension fits size exactly. +Note that this is distinct from using size as the +desired size, as here the drawing is expanded before edges are generated and +all node and text sizes remain unchanged. +

+If ratio = "auto", the page +attribute is set and the graph cannot be drawn on a single page, +then size is set to an ``ideal'' value. +In particular, the size in a given dimension will be the smallest integral +multiple of the page size in that dimension which is at least half the +current size. The two dimensions are then scaled independently to the +new size. This feature only works in dot. +:rects:N:rect; write +Rectangles for fields of records, in points. +:regular:N:bool:false; +If true, force polygon to be regular. +:remincross:G:bool:false; dot +If true and there are multiple clusters, run cross +minimization a second time. +:resolution:G:double:96.0/0.0; bitmap,svg +This is a synonym for the dpi attribute. +:root:GN:string/bool:""(graphs)/false(nodes); twopi,circo +This specifies nodes to be used as the center of the +layout and the root of the generated spanning tree. As a graph attribute, +this gives the name of the node. As a node attribute (circo only), it +specifies that the node should be used as a central node. In twopi, +this will actually be the central node. In circo, the block containing +the node will be central in the drawing of its connected component. +If not defined, +twopi will pick a most central node, and circo will pick a random node. +:rotate:G:int:0; +If 90, set drawing orientation to landscape. +:samehead:E:string:""; dot +Edges with the same head and the same samehead value are aimed +at the same point on the head. +See limitation. +:sametail:E:string:""; dot +Edges with the same tail and the same sametail value are aimed +at the same point on the tail. +See limitation. +:samplepoints:N:int:8(output)/20(overlap and image maps); +If the input graph defines the vertices +attribute, and output is dot or xdot, this gives +the number of points used for a node whose shape is a circle or ellipse. +It plays the same role in neato, when adjusting the layout to avoid +overlapping nodes, and in image maps. +:searchsize:G:int:30; dot +During network simplex, maximum number of edges with negative cut values +to search when looking for one with minimum cut value. +:sep:G:double/pointf:+4; notdot +Specifies margin to leave around nodes when removing node overlap. +This guarantees a minimal non-zero distance between nodes. +

+If the attribute begins with a plus sign '+', an additive margin is +specified. That is, "+w,h" causes the node's bounding box to be increased +by w +points on the left and right sides, and by h points on the top and bottom. +Without a plus sign, the node is scaled by 1 + w in the x coordinate +and 1 + h in the y coordinate. +

+If only a single number is given, this is used for both dimensions. +

+If unset but esep is defined, the sep values +will be set to the esep values divided by 0.8. +If esep is unset, the default value is used. +:shape:N:shape:ellipse; +Set the shape of a node. +:shapefile:N:string:""; +(Deprecated) If defined, shapefile specifies a file containing user-supplied node content. +The shape of the node is set to box. +The image in the shapefile must be +rectangular. The image formats supported as well as the precise semantics of +how the file is used depends on the +output format. For further details, see +External PostScript files. +

+There is one exception to this usage. +If shape is set to "epsf", shapefile gives +a filename containing a definition of the node in PostScript. +The graphics defined must be contain all of the +node content, including any desired boundaries. +For further details, see + +External PostScript files. +:showboxes:ENG:int:0:0; dot +Print guide boxes in PostScript at the beginning of +routesplines if 1, or at the end if 2. (Debugging) +:sides:N:int:4:0; +Number of sides if shape=polygon. +:size:G:pointf; +Maximum width and height of drawing, in inches. +If defined and the drawing is too large, the drawing is uniformly +scaled down so that it fits within the given size. +

+If size ends in an exclamation point (!), +then it is taken to be +the desired size. In this case, if both dimensions of the drawing are +less than size, the drawing is scaled up uniformly until at +least one dimension equals its dimension in size. +

+Note that there is some interaction between the size and +ratio attributes. +:skew:N:double:0.0:-100.0; +Skew factor for shape=polygon. Positive values +skew top of polygon to right; negative to left. +:splines:G:bool/string; +Controls how, and if, edges are represented. If true, edges are drawn as +splines routed around nodes; if false, edges are drawn as line segments. +If set to "", no edges are drawn at all. +

+(1 March 2007) The values line and spline can be +used as synonyms for false and true, respectively. +In addition, the value polyline specifies that edges should be +drawn as polylines. +

+By default, the attribute is unset. How this is interpreted depends on +the layout. For dot, the default is to draw edges as splines. For all +other layouts, the default is to draw edges as line segments. Note that +for these latter layouts, if splines="true", this +requires non-overlapping nodes (cf. overlap). +If fdp is used for layout and splines="compound", then the edges are +drawn to avoid clusters as well as nodes. +:start:G:startType:""; neato,fdp +Parameter used to determine the initial layout of nodes. If unset, the +nodes are randomly placed in a unit square with +the same seed is always used for the random number generator, so the +initial placement is repeatable. +:style:ENC:style:; +Set style for node or edge. For cluster subgraph, if "filled", the +cluster box's background is filled. +:stylesheet:G:string:""; svg +A URL or pathname specifying an XML style sheet, used in SVG output. +:tailURL:E:lblString:""; map,svg +If tailURL is defined, it is +output as part of the tail label of the edge. +Also, this value is used near the tail node, overriding any +URL value. +See limitation. +:tailclip:E:bool:true; +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. +:tailhref:E:lblString:""; map,svg +Synonym for tailURL. +:taillabel:E:lblString:""; +Text label to be placed near tail of edge. +See limitation. +:tailport:E:portPos:center; +Indicates where on the tail node to attach the tail of the edge. +See limitation. +:tailtarget:E:escString:; map,svg +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. +:tailtooltip:E:escString:""; cmap,svg +Tooltip annotation attached to the tail of an edge. This is used only +if the edge has a tailURL attribute. +:target:ENGC:escString/string:; map,svg +If the object has a URL, this attribute determines which window +of the browser is used for the URL. +See W3C documentation. +:tooltip:NEC:escString:""; cmap,svg +Tooltip annotation attached to the node or edge. If unset, Graphviz +will use the object's label if defined. +Note that if the label is a record specification or an HTML-like +label, the resulting tooltip may be unhelpful. In this case, if +tooltips will be generated, the user should set a tooltip +attribute explicitly. +#toplabel:N:string:""; +# Additional label near top of nodes of shape M*. +:truecolor:G:bool:; bitmap +If set explicitly to true or false, the value determines whether or not +internal bitmap rendering relies on a truecolor color model or uses +a color palette. +If the attribute is unset, truecolor is not used +unless there is a shapefile property +for some node in the graph. +The output model will use the input model when possible. +

+Use of color palettes results in less memory usage during creation of the +bitmaps and smaller output files. +

+Usually, the only time it is necessary to specify the truetype model +is if the graph uses more than 256 colors. +However, if one uses bgcolor=transparent with +a color palette, font +antialiasing can show up as a fuzzy white area around characters. +Using truecolor=true avoids this problem. +:vertices:N:pointfList; write +If the input graph defines this attribute, the node is polygonal, +and output is dot or xdot, this attribute provides the +coordinates of the vertices of the node's polygon, in inches. +If the node is an ellipse or circle, the +samplepoints attribute affects +the output. +:viewport:G:viewPort:""; ps,map,cmap,bitmap +Clipping window on final drawing. +:voro_margin:G:double:0.05:0.0; notdot +Factor to scale up drawing to allow margin for expansion in +Voronoi technique. dim' = (1+2*margin)*dim. +#voro_pmargin:G:double; neato +# Obsolete, replaced by sep +#w:E:double:1.0; neato +# Redundant definition of weight in neato, cf. bug 9. +:weight:E:double:1.0:0(dot)/1(neato); +Weight of edge. In dot, the heavier the weight, the shorter, +straighter and more vertical the edge is. In neato, the heavier the +weight, the more neato will try to place the end points so that the +length of the edge is len. +:width:N:double:0.75:0.01; +Width of node, in inches. This is taken as the initial, minimum width +of the node. If fixedsize is true, this +will be the final width of the node. Otherwise, if the node label +requires more width to fit, the node's width will be increased to +contain the label. Note also that, if the output format is dot, the +value given to width will be the final value. +:z:N:double:0.0:-MAXFLOAT/-1000; +Provides z coordinate value for 3D layouts and displays. If the +graph has dim set to 3 (or more), +neato will use a node's z value +for the z coordinate of its initial position if +its pos attribute is also defined. +

+Even if no z values are specified in the input, it is necessary to +declare a z attribute for nodes, e.g, using node[z=""] +in order to get z values on output. +Thus, setting dim=3 but not declaring z will +cause neato -Tvrml to +layout the graph in 3D but project the layout onto the xy-plane +for the rendering. If the z attribute is declared, the final rendering +will be in 3D.