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に関する他の記事はこちらを参照してください。

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に関する他の記事はこちらを参照してください。

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に関する他の記事はこちらを参照してください。

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に関する他の記事はこちらを参照してください。

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に関する他の記事はこちらを参照してください。

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に関する他の記事はこちらを参照してください。

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に関する他の記事はこちらを参照してください。

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に関する他の記事はこちらを参照してください。

Wednesday, January 16, 2019

PythonとGraphvizでサブグラフ(クラスタ)にラベルを設定する

PythonとGraphvizでサブグラフ(クラスタ)にラベルを設定するには、以下のようにsubgraphとlabelを使用します。

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

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

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

dot.node('開始')
dot.node('終了')
dot.edge("開始", "手順1")
dot.edge("開始", "手順3")
dot.edge("手順2", "終了")
dot.edge("手順4", "終了")
dot.render("graphviz-test27")

○出力画像


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


○関連情報
Graphvizまとめ

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

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

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

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

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

dot = Digraph(format='png')
# フォント設定
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")
dot.edge("開始", "手順3")
dot.edge("手順2", "終了")
dot.edge("手順4", "終了")
dot.render("graphviz-test26")

○出力画像


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


○関連情報
Graphvizまとめ

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

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

PythonとGraphvizでレコード型のノードを描画する

PythonとGraphvizでレコード型のノードを描画するには、以下のようにshapeアトリビュートを使用します。

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

dot = Digraph(format='png')
# フォント設定
dot.attr('node', fontname="MS Gothic")
# ノード作成
dot.node("項目1", shape="record", label="<lp> 左| 中央 |<rp> 右")
dot.node('項目2')
dot.node("項目3")
# エッジ作成
dot.edge("項目1:lp", "項目2")
dot.edge("項目1:rp", "項目3")
dot.render("graphviz-test25")

※日本語を使用する場合はスペースを挟まないといけない場合がある??

○出力画像

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


○関連情報
Graphvizまとめ

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

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

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に関する他の記事はこちらを参照してください。

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に関する他の記事はこちらを参照してください。

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に関する他の記事はこちらを参照してください。

Thursday, December 27, 2018

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

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

○サンプルコード
# 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")
dot.edge("項目2", "項目3")
dot.edge("項目2", "項目4", label="execute")
dot.render("graphviz-test21")

○出力画像


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


○関連情報
Graphvizまとめ

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

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

Wednesday, December 26, 2018

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')
dot.node("項目3")
dot.node("項目4")
# エッジ作成
dot.edge("項目1", "項目2", style="dotted")
dot.edge("項目2", "項目3", style="dotted")
dot.edge("項目2", "項目4", style="dashed")
dot.render("graphviz-test20")

○出力画像


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


○関連情報
Graphvizまとめ

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

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

Tuesday, December 25, 2018

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

PythonとGraphvizで矢印の接続先を指定するには、以下のサンプルコードのようにheadportアトリビュートを使用します。

○サンプルコード
# 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.node("項目6")
# エッジ作成
dot.edge("項目1", "項目2")
dot.edge("項目2", "項目3")
dot.edge("項目2", "項目4", headport="w")
dot.edge("項目2", "項目5", headport="e")
dot.edge("項目2", "項目6", headport="s")
dot.render("graphviz-test19")

○出力画像

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


○関連情報
Graphvizまとめ

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

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