Friday, January 04, 2019

PythonとGraphvizで矢印の接続元を指定する

PythonとGraphvizで矢印の接続元を指定するには、以下のようにtailport attributeを使用します。

〇サンプルコード
# coding: utf-8 
from graphviz import Digraph

dot = Digraph(format='png')
# フォント設定
dot.attr('node', fontname="MS Gothic")
# ノード作成
dot.node("項目1")
dot.node('項目2')
dot.node("項目3")
dot.node("項目4")
dot.node("項目5")
# エッジ作成
dot.edge("項目1", "項目2")
dot.edge("項目2", "項目3")
dot.edge("項目2", "項目4", tailport="e")
dot.edge("項目2", "項目5", tailport="w")
dot.render("graphviz-test24")

○出力画像


〇graphvizのインストール
pipenv install graphvizやpip install graphvizなどでインストールします。


○関連情報
Graphvizまとめ

・コマンドから同様のことを実行する場合は「Graphvizで矢印の接続元を指定する」を参照してください。

・PythonとGraphvizに関する他の記事はこちらを参照してください。

・サンプルコードを実行する環境としてDockerコンテナを利用することもできます。コンテナの構築方法は「Dockerでpython3.7とgraphvizをインストールしたコンテナ(Alpine3.9ベース)を作成する」を参照してください。

PythonとGraphvizでノードのランクを合わせる

PythonとGraphvizでノードのランクを合わせるには、以下のようにrankアトリビュートを使用します。

〇サンプルコード
# coding: utf-8 
from graphviz import Graph

dot = Graph(format='png')
# フォント設定
dot.attr('node', fontname="MS Gothic")
#dot.attr('rank', "same; 項目2; 項目4;")
# ノード作成
dot.node("項目1")
dot.node('項目2')
dot.node("項目3")
dot.node("項目4")
dot.node("項目5")
# エッジ作成
dot.edge("項目1", "項目2")
dot.edge("項目2", "項目3")
#dot.edge("項目2", "項目4", rank="same")
dot.edge("項目4", "項目5")
#dot.attr('rank', "same")
with dot.subgraph() as sg:
  sg.graph_attr['rank']='same'
  sg.edge("項目2", "項目4")

dot.render("graphviz-test23")

○出力画像


〇graphvizのインストール
pipenv install graphvizやpip install graphvizなどでインストールします。


○関連情報
Graphvizまとめ

・コマンドから同様のことを実行する場合は「Graphvizでノードのランクを合わせる」を参照してください。

・PythonとGraphvizに関する他の記事はこちらを参照してください。

・サンプルコードを実行する環境としてDockerコンテナを利用することもできます。コンテナの構築方法は「Dockerでpython3.7とgraphvizをインストールしたコンテナ(Alpine3.9ベース)を作成する」を参照してください。

PythonとGraphvizでHTML風のラベルを指定する

PythonとGraphvizでHTML風のラベルを指定するには、以下のようにlabelアトリビュートを使用します。

○サンプルコード
# coding: utf-8 
from graphviz import Digraph

dot = Digraph(format='png')
# フォント設定
dot.attr('node', fontname="MS Gothic")
# ノード作成
dot.node("項目1", shape="none", label="""<
<table cellpadding="16" cellspacing="4">
<tr><td>列1 </td><td>列2 </td></tr>
<tr><td>100</td><td>200</td></tr>
</table>>""")
dot.render("graphviz-test22")

○出力画像


〇graphvizのインストール
pipenv install graphvizやpip install graphvizなどでインストールします。


○関連情報
Graphvizまとめ

・コマンドから同様のことを実行する場合は「GraphvizでHTML風のラベルを指定する」を参照してください。

・PythonとGraphvizに関する他の記事はこちらを参照してください。

・サンプルコードを実行する環境としてDockerコンテナを利用することもできます。コンテナの構築方法は「Dockerでpython3.7とgraphvizをインストールしたコンテナ(Alpine3.9ベース)を作成する」を参照してください。