PythonのGraphviz グラフの設定
公開日 2024-10-27
この記事ではPythonのGraphvizでグラフを設定する方法を解説します。 グラフのタイトルや背景色、エッジの描画方法を設定できます。
グラフ設定の基本¶
グラフの設定を変更する場合、作成したGraphやDigraphオブジェクトのattr()メソッドを用います。
このメソッドの最初の引数をgraphとして、2番目以降の引数に属性と設定値を与えます。
from graphviz import Digraph
graph = Digraph()
graph.attr("graph", label="graph title") # タイトルの設定
graph.edge("1", "2")
graphLoading...
グラフのタイトル¶
label属性を指定することにより、グラフのタイトルを表示できます。
from graphviz import Graph
graph = Graph()
graph.attr("graph", label="graph title")
graph.edge("node1", "node2")
graphLoading...
graph = Graph()
graph.attr("graph", label="graph title", labeljust="l", labelloc="t")
graph.edge("node1", "node2")
graph.edge("node1", "node3")
graphLoading...
文字色¶
タイトルの文字色をfontcolor属性で指定できます。
graph = Graph()
graph.attr("graph", label="graph title", fontcolor="red")
graph.edge("node1", "node2")
graphLoading...
背景色¶
背景色はbgcolor属性で指定できます。
graph = Graph()
graph.attr("graph", bgcolor="gray")
graph.edge("node1", "node2")
graphLoading...
同一経路のエッジをまとめる¶
concentrate属性をtrueに指定すると、同一経路のエッジをまとめて表示することができます。
concentrate属性のデフォルト値はfalseです。
以下に例を示します。
node1とnode2間の経路を2つ定義しています。
これをconcentrate="false"(デフォルト値)としたとき、エッジが2本描画されます。
graph = Graph()
graph.attr("graph", concentrate="false")
graph.edge("node1", "node2")
graph.edge("node1", "node2") # 上の行と同じ経路
graph.edge("node1", "node3")
graph.edge("node2", "node4")
graph.edge("node3", "node4")
graphLoading...
このグラフに対してconcentrate="true"とすると、以下の通りエッジは1本だけ描画されるようになりました。
graph.attr("graph", concentrate="true")
graphLoading...
エッジの線の種類¶
splines属性によってエッジの線の種類を指定できます。
指定できる線の種類は以下の通りです。
none: 線なしline: 直線polyline: 折れ線curved: 曲線ortho: 直交する直線spline: スプライン曲線
以下にそれぞれ例を示します。
graph = Graph()
graph.attr("graph", splines="none")
graph.edge("node1", "node2")
graph.edge("node1", "node3")
graph.edge("node1", "node4")
graph.edge("node2", "node5")
graph.edge("node1", "node5")
graphLoading...
graph.attr("graph", splines="line")
graphLoading...
graph.attr("graph", splines="polyline")
graphLoading...
graph.attr("graph", splines="curved")
graphLoading...
graph.attr("graph", splines="ortho")
graphLoading...
graph.attr("graph", splines="spline")
graphLoading...