Monday, January 28, 2019

PythonとGraphvizで矢印の頭の形を変更する

PythonとGraphvizで矢印の頭の形を変更するには、以下のようにarrowheadを使用します。

〇サンプルコード
# 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.edge("項目1", "項目2", arrowhead="dot")
dot.edge("項目2", "項目3", arrowhead="empty")
dot.edge("項目2", "項目4", arrowhead="diamond")
dot.render("graphviz-test30")

○出力画像


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


○関連情報
Graphvizまとめ

・コマンドから同様のことを実行する場合は「Graphvizで矢印の頭の形を変更する」を参照してください。

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

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

PythonとGraphvizでGraphvizでノードの間隔を調節する

PythonとGraphvizでGraphvizでノードの間隔を調節するには、以下のようにranksepとnodesepを使用します。

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

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

○出力画像


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


○関連情報
Graphvizまとめ

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

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

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

PythonとGraphvizでサブグラフ(クラスタ)への矢印を描画する

PythonとGraphvizでサブグラフ(クラスタ)への矢印を描画するには、以下のようにlheadとltailを使用します。

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

dot = Digraph(format='png')
dot.attr(compound='true')
# フォント設定
dot.attr('node', fontname="MS Gothic")
# ノード作成
with dot.subgraph(name="cluster0") as sg:
  sg.node("手順1")
  sg.node("手順2")
  sg.edge("手順1", "手順2")

with dot.subgraph(name="cluster1") as sg:
  sg.node("手順3")
  sg.node("手順4")
  sg.edge("手順3", "手順4")

dot.node('開始')
dot.node('終了')
dot.edge("開始", "手順1", lhead="cluster0")
dot.edge("開始", "手順3", lhead="cluster1")
dot.edge("手順2", "終了", ltail="cluster0")
dot.edge("手順4", "終了", ltail="cluster1")
dot.render("graphviz-test28")

○出力画像


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


○関連情報
Graphvizまとめ

・コマンドから同様のことを実行する場合は「Graphvizでサブグラフ(クラスタ)への矢印を描画する 」を参照してください。

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

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