to top page
2013-01-18
DOT言語で読む風太郎忍法帖 [1] くノ一紅騎兵(続き)
前項の宿題であるグラフの彩色と矢印の意味付けをやった。まず彩色から。



Graphviz のデフォルトでは、上の上杉景勝のようにノードの枠線は黒、内部は白になる。
ノードの色を変えるには、枠線と内部の両方を指定する必要があり、陽炎の場合は次のようにした。color 属性で枠線、fillcolor 属性で内部の色を指定する。内部の色を指定するさいは style 属性も指定おく必要がある。

陽炎 [color ="#ffcc00", style = filled, fillcolor = "#ffcc00"];

色をつけたことで陽炎と斎藤天鬼の対照がくっきりした。天鬼は物語のはじめの方で登場して、あっさり殺されてしまう。いわば主人公・陽炎の引き立て役だから物語中での存在は軽いのだが、
   天鬼 - 上杉の動向を探るため徳川方から派遣された密偵
   陽炎 - 豊臣方から上杉家中に送り込まれた工作員
という対称的ポジションを占めていることが、この図からわかる。
物語の進展を背後からあやつる直江山城の存在感がこの図では薄いので、二重線で囲ってみた。枠線は三重、四重にもでき、点線なども使える。

宿題のもう一つは矢印による意味付け。
利用できる矢印の形は公式サイトで一覧できる。
- Arrow Shapes | Graphviz - Graph Visualization Software

10種の基本形が用意されていて、それらを組み合わせたバリエーションも豊富だが、ここでは簡単なものだけ使って、
   同盟関係 - 双方向の黒い矢印
   敵対関係 - 双方向の赤い矢印
   主従関係 - 根元が丸い矢印
ということにした。
陽炎と上杉景勝の関係は特別なものなので、矢尻の形を少し変えた。
斎藤天鬼と鍬形杖兵衛は一方的にやられてしまう役なので、敵対関係ではあるが片方向の点線で軽めの表現にした。
矢印に意味を加えたグラフは次の通り。



今回書いた DOT プログラムの最終版。
digraph {
    graph [size = 6];
    subgraph cluster0 {
        graph [color = "#cccccc", bgcolor = "#cccccc"];
        node [color ="#ffffff", style = filled, fillcolor ="#ffffff"];
        上杉景勝 -> 直江山城 [dir = both, arrowtail = odot];
        上杉景勝 -> 千坂民部 [dir = both, arrowtail = odot];
        上杉景勝 -> 上泉泰綱 [dir = both, arrowtail = odot];
        上杉景勝 -> 前田利太 [dir = both, arrowtail = odot];
        蒲生家 -> 岡野左内 [dir = both, arrowtail = odot];
        佐竹家 -> 車丹波 [dir = both, arrowtail = odot];
        陽炎 -> 斎藤天鬼 [color = "#ff0000", style = dashed];
        陽炎 -> 鍬形杖兵衛 [color = "#ff0000", style = dashed];
    }
    徳川家康 -> 本多正信 [dir = both, arrowtail = odot];
    本多正信 -> 斎藤天鬼 [dir = both, arrowtail = odot];
    陽炎 -> 上杉景勝 [dir = both, arrowhead = vee, arrowtail = vee];
    陽炎 -> 直江山城 [dir = both];
    真田昌幸 -> 陽炎 [dir = both, arrowtail = odot];
    真田昌幸 -> 直江山城 [dir = both];
    直江山城 -> 徳川家康 [dir = both, color = "#ff0000"];
    真田昌幸 -> 石田三成 [dir = both];
    {rank = same; 徳川家康; 本多正信}
    {rank = same; 石田三成; 真田昌幸}
    陽炎 [color ="#ffcc00", style = filled, fillcolor = "#ffcc00"];
    石田三成 [color ="#ffcc00", style = filled, fillcolor = "#ffcc00"];
    真田昌幸 [color ="#ffcc00", style = filled, fillcolor = "#ffcc00"];
    斎藤天鬼 [color ="#ccff66", style = filled, fillcolor = "#ccff66"];
    徳川家康 [color ="#ccff66", style = filled, fillcolor = "#ccff66"];
    本多正信 [color ="#ccff66", style = filled, fillcolor = "#ccff66"];
    直江山城 [color ="#000000", peripheries = 2];
    上杉景勝 [color ="#000000"];
}