辺のスタイル

graphviz-edge.png
破線 style="dashed"

線の接続の形

 edge[color="olivedrab",penwidth="2"];

基本的なスタイル

属性名 適用できるタイプ デフォルト値 意味 可能なレイアウト
color ENC color colorList black
penwidth CNE double 1.0 線の太さ
style ENCG style "" 破線(dashed) 見えなくする(invis),solid,dotted,bold
colorscheme ENCG string ""
decorate E bool false If true, attach edge label to edge by a 2-segment polyline, ラベルに下線を引く, then going to the closest point of spline
dir E dirType forward(directed)none(undirected),back,both(両方に矢尻)
fontcolor ENGC color black
fontname ENGC string "Times-Roman"
fontsize ENGC double 14.0
label ENGC lblString "\N" (nodes)"" (otherwise)
fillcolor NEC color colorList lightgrey(nodes) black (clusters) 線の色

応用的なスタイル

属性名 適用できるタイプ デフォルト値 意味 可能なレイアウト
headclip E bool true falseにするとノードの真ん中を指すようになります
headlabel E lblString "" ここにラベルを書くと矢印の矢尻の方に文字が書かれます
headport,tailport E portPos center 各々、辺の行き先がノードのどの位置になるかどうか,n,w,e,s
tailclip E bool true
taillabel E lblString ""
weight E int ,double 1 最小値は0(dot)1(neato,fdp) dotでは数値が高いほど辺が短く、真っ直ぐになる。dotでは整数でなければならない。無向グラフでは数値が高いほど辺が短くなるだけ。 *
comment ENG string "" ただのコメント。出力には一切出ない
arrowhead E arrowType normal
arrowsize E double 1.0 0.0
arrowtail E arrowType normal
nojustify GCNE bool false デフォルトでは 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. もし"true"ならば複数行のラベル will be justified in the context of itself. 例えば, 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.
xlabel EN lblString ""
属性名 適用できるタイプ デフォルト値 意味 可能なレイアウト

labelの設定

属性名 適用できるタイプ デフォルト値 意味 可能なレイアウト
labelangle E double -25.0 最小値は-180.0
labeldistance E double 10 points 最小値は0.0,Multiplicative scaling factor adjusting the distance that the headlabel(taillabel) が head(tail) nodeからどのくらい離れているかを指定する。
labelfloat 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
labelfontname E string "Times-Roman"
labelfontsize E double 14.0 最小値は1.0

portPos

辺がどこに向かって行くのかを示す修飾子。
It has the form portname(:compass_point)? or compass_point.
If the first form is used, the corresponding node must either have record shape with one of its fields having the given portname,
or have an HTML-like label, one of whose components has a PORT attribute set to portname.
If a compass point is used, it must have the for

  • n
  • ne
  • e
  • se
  • s
  • sw
  • w
  • nw
  • c…..cemter,ノードの真ん中
  • _…..The compass point "_" specifies that an appropriate side of the port adjacent to the exterior of the node should be used, if such exists. Otherwise, the center is used.

If no compass point is used with a portname, the default value is "_".

This modifies the edge placement to aim for the corresponding compass point on the port or,
in the second form where no portname is supplied,
on the node itself.

これらの属性はheadport and tailport属性に使用する。

node1:port1 -> node2:port5:nw;

Note that it is legal to have a portname the same as one of the compass points.
In this case, this reference will be resolved to the port.
Thus, if node A has a port w, then headport=w will refer to the port and not the compass point.
At present, in this case, there is no way to specify that the compass point should be used.

単純にこうするだけで効果てきめん

node1->node2[headport=s];//node2の南に矢印がつく

svg onlyのもの

属性名 適用できるタイプ デフォルト値 意味 可能なレイアウト
id GCNE escString "" svg, postscript, map only
href GCNE escString "" svg, postscript, map only リンクを貼る
tooltip NEC escString "" svg, cmap only ツールチップ表示のテキスト
target ENGC escString string <none> svg, map only
URL ENGC escString <none> svg, postscript, map only
tailtarget E escString <none> svg, map only
tailtooltip E escString "" svg, cmap only
labelhref E escString "" svg, map only
labeltarget E escString <none> svg, map only
labeltooltip E escString "" svg, cmap only
tailURL E escString "" svg, map only
edgeURL E escString "" svg, map only
edgehref E escString "" svg, map only
edgetarget E escString <none> svg, map only
edgetooltip E escString "" svg, cmap only
headURL E escString "" svg, map only
headhref E escString "" svg, map only
headtarget E escString <none> svg, map only
headtooltip E escString "" svg, cmap only
labelURL E escString " svg, map only
tailhref E escString "" svg, map only

dot onlyのもの

属性名 適用できるタイプ デフォルト値 意味 可能なレイアウト
lhead E string "" dot only
ltail E string "" dot only
samehead E string "" 複数の他の辺で同じ数値を指定しておけば、同じ端点を目指すらしい? dot only
sametail E string "" dot only
constraint E bool true 英語の意味は「束縛」エッジがランキングに左右されるかどうかを指定する。 dot only

neato only

属性名 適用できるタイプ デフォルト値 意味 可能なレイアウト
len E double 1.0(neato)0.3(fdp) 辺の長さをインチで指定 fdp, neato only
pos EN point splineTypeインチ ノードの中心位置 neato,fdp

write only

属性名 適用できるタイプ デフォルト値 意味 可能なレイアウト
head_lp E point write only
tail_lp E point write only
xlp NE point write only

合わせ技的なもの

辺につくラベルの位置はパッと指定できるオプションはないので、
labeldistancelabelangleを組み合わせて工夫するしかない。

a -> b [
        headlabel="Label on the left side" 
        labeldistance=7.5 
        labelangle=75
       ]

辺の伸びる位置をノードではない場所にする裏技

[1]が参考になりました。

node [fixedsize = true, width = 0.01, height = 0.01, shape = point,color="#00000000"];

こういうスタイルのダミーノードを置いて、それに接続するとよい
http://miffysora.wikidot.com/graphviz-style

辺のスタイルをまとめて指定するにはsubgraphを用いる[2]

たとえばこのように

digraph G {                                                                     
  compound=true;
  subgraph columns {
    c0r0 -> c0r1;
    c0r1 -> c0r2;
    c1r0 -> c1r1;
    c1r1 -> c1r2;
    c2r0 -> c2r1;
    c2r1 -> c2r2;
  }
  subgraph rows {
    edge [color=red, constraint=false];
    c0r0 -> c1r0;
    c1r0 -> c2r0;
    c0r1 -> c1r1;
    c1r1 -> c2r1;
    c0r2 -> c1r2;
    c1r2 -> c2r2;
  }
}

この時注意してほしいのがsubgraphの名前の先頭にclusterをつけないこと
clusterをつけると、subgraphでくくったやつに四角い枠がつきます。四角い枠つけたいならばclusterつけますが

Graphvizだけでは不可能なこと

  • 辺のラベルを辺に沿わせる[3]

SVGの機能を使えば可能

サポートサイト Wikidot.com