Friday, February 08, 2019

PythonとGraphvizのcircoで有方向グラフを描画する

PythonとGraphvizのcircoで有方向グラフを描画するには、以下のようなコマンドを実行します。

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

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

○出力画像


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


○関連情報
Graphvizまとめ

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

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

PythonとGraphvizのneatoでノードの位置を調節する

PythonとGraphvizのneatoでノードの位置を調節するには、以下のようにposアトリビュートを使用します。

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

gv = Graph(engine='neato', format='png')
# フォント設定
gv.attr('node', fontname="MS Gothic")
# ノード作成
gv.node("項目1", pos="0,0!")
gv.node("項目2", pos="3,0!")
gv.node("項目3")
gv.node("項目4", pos="0,1!")
# エッジ作成
gv.edge("項目1", "項目2")
gv.edge("項目2", "項目3")
gv.edge("項目3", "項目4")
gv.edge("項目4", "項目1")
gv.render("graphviz-test34")

○出力画像


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


○関連情報
Graphvizまとめ

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

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

PythonとGraphvizのneatoでノード間の線の長さを変更する

PythonとGraphvizのneatoでノード間の線の長さを変更するには、以下のようにlenアトリビュートを使用します。

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

gv = Graph(engine='neato', format='png')
# フォント設定
gv.attr('node', fontname="MS Gothic")
# ノード作成
gv.node("項目1")
gv.node("項目2")
gv.node("項目3")
gv.node("項目4")
# エッジ作成
gv.edge("項目1", "項目2")
gv.edge("項目2", "項目3")
gv.edge("項目3", "項目4")
gv.edge("項目4", "項目1", len="2")
gv.render("graphviz-test33")

○出力画像


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


○関連情報
Graphvizまとめ

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

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

PythonとGraphvizのneatoで無方向グラフを描画する

PythonとGraphvizのneatoで無方向グラフを描画するには、以下のようにengineを指定します。

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

gv = Graph(engine='neato', format='png')
# フォント設定
gv.attr('node', fontname="MS Gothic")
# ノード作成
gv.node("項目1")
gv.node("項目2")
gv.node("項目3")
gv.node("項目4")
gv.node("項目5")
# エッジ作成
gv.edge("項目1", "項目2")
gv.edge("項目2", "項目3")
gv.edge("項目2", "項目4")
gv.edge("項目2", "項目5")
gv.render("graphviz-test32")

○出力画像


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


○関連情報
Graphvizまとめ

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

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

PythonとGraphvizで角丸四角などの角が丸まった形を描画する

PythonとGraphvizで角丸四角などの角が丸まった形を描画するには、以下のようにstyleアトリビュートを使用します。

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

dot = Digraph(format='png')
# フォント設定
dot.attr('node', fontname="MS Gothic")
# ノード作成
dot.node("項目1")
dot.node('項目2', shape="box", style="rounded,filled",
  fillcolor="#ccddff")
dot.node("項目3", shape="triangle", style="rounded,filled",
  fillcolor="#ccddff")
dot.node("項目4", shape="house", style="rounded,filled", 
  fillcolor="#ccddff")
# エッジ作成
dot.edge("項目1", "項目2")
dot.edge("項目2", "項目3")
dot.edge("項目2", "項目4")
dot.render("graphviz-test31")

○出力画像


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


○関連情報
Graphvizまとめ

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

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