Graphviz で Edge (ノードとノードを繋ぐワイヤーもしくは矢印のこと) を見えなくするには、style に invis を設定する。例えばこんな感じ。
a -> b [style=invis];
複数の Edge を見えなくさせるには、こんな風に書いてもいい。
{ edge [style=invis]; a -> b; a -> c; a -> d -> e; }
別解
Edge を消す方法には、背景色と同じ色を Edge に設定する方法もある。
a -> b [color=white]
ただ、この方法だと背景色を他のものに変えた時に Edge が再び現れてしまう。また、ノードの枠線を矢印の先が白色で上書きして、ほんの少しだけど枠線が欠けたやうに見えてしまう。あまりスマートな解法じゃない。
ぼくは Blogger の歴史 を Graphviz で描く時にこの方法を使ったけど、今はもう style=invis 方式に変えてしまった。
見えない Edge Tips
ぼくは「Blogger の歴史」で、こんな風に「見ない Edge」を使った。
digraph g { # Headers { node [shape=plaintext]; row1; row2; row3; } { rank=same; row1; row2; row3; } { # edge [style=invis]; row1 -> row2 -> row3; row1 -> a; row2 -> c; row3 -> e; } # Relations { rank=same; b; c; } a -> b -> c -> d; e -> f; }
列の説明をグラフの上に書く、というスクリプト。row1, row2 row3 を rank=same
を使って同階層にまとめている。これを絵にするとかうなる。
そして、style=invis
で Edge を消すと
ほら、いい感じ。
もっと複雑なグラフでも、rank を使って矢印を張り、edge を消してしまうと幸せになれることが多い。思い通りにノードを配置できないことがあったら、是非思い出して欲しい。
No comments:
Post a Comment