概要

インストール

brew install graphviz  # graphviz 自体のインストール
pip install graphviz   # python から使うためのライブラリ

使い方

無向グラフ

from graphviz import Graph

g = Graph(format='png', filename='graph')
# グラフ全体の設定
g.graph_attr.update(
    rankdir='LR'
)
# ノードの汎用設定
g.node_attr.update(
    shape='box',             # ノード設定:形を長方形に
    style='filled',          # ノード設定:
    color='red',             # ノード設定:
    fontname='MS Gothic',    # ノード設定:
    fontsize='20',           # ノード設定:
    fontcolor='magenta',     # ノード設定:
    fillcolor='lightblue',   # ノード設定:
    height='0.8',            # ノード設定:高さ
    width='1.6'              # ノード設定:横幅
)
g.edge_attr.update(
    color='orange'
)

g.node('A')             # ノードの名前とラベルを同じ値に
g.node('B', 'Bob')      # ノードの名前とラベルを別の値に
g.node('C',
       shape='square',  # 形を正方形に
       penwidth='5'     # ペンの太さ(線の太さ)
)

g.edge('A', 'B', 'foo')  # A から B へ「foo」というエッジを張る
g.edge('A', 'C', 'bar',
       color='green',
       fontcolor='blue',
       penwidth='3'
)
g.view()

有向グラフ

from graphviz import Digraph

g = Digraph(format='png', filename='digraph')
g.edge('0', '1', 'foo')
g.edge('0', '2', 'bar',
       arrowhead='dot',
       color='red',
       fontcolor='blue'
)
g.view()

クラスター

g = Digraph(format='png', filename='cluster')
with g.subgraph(name='Cluster 1') as c1:
    c1.node('C1-1')
    c1.node('C1-2')
    c1.edge('C1-1', 'C1-2')

with g.subgraph(name='Cluster 2') as c2:
    c2.node('C2-1')
    c2.node('C2-2')
    c2.edge('C2-1', 'C2-2')

g.node('Root')
g.edge('Root', 'C1-1', 'AAA')
g.edge('Root', 'C2-1', 'BBB')
g.edge('C1-2', 'C2-2', 'CCC')
g.view()