Pynote

Python、機械学習、画像処理について

graphviz - エッジの属性

ノードの属性

名前 説明
dir エッジの頭、尾を描画するかどうかを指定する。
arrowhead エッジの頭のスタイルを指定する。
arrowtail エッジの尾のスタイルを指定する。
arrowsize エッジの頭、尾の大きさを指定する。
color エッジの色を指定する。
fillcolor エッジの頭、尾の色を指定する。
headport エッジの頭をノードに接続する場所を指定する。
tailport エッジの尾をノードに接続する場所を指定する。
penwidth エッジの太さを指定する。
style エッジのスタイルを指定する。
label エッジのラベルを指定する。
xlabel エッジの第2のラベルを指定する。
fontcolor エッジのラベルの色を指定する。
fontname エッジのラベルのフォント名を指定する。
fontsize エッジのラベルのフォントサイズを指定する。
headlabel エッジの頭のラベル名を指定する。
taillabel エッジの尾のラベル名を指定する。
labelfontcolor 頭、尾のラベルの色を指定する。
labelfontname 頭、尾のラベルのフォント名を指定する。
labelfontsize 頭、尾のラベルのフォントサイズを指定する。
labelangle 頭、尾のラベルのエッジの中心からの角度を指定する。
labeldistance 頭、尾のラベルのエッジの中心からの距離を指定する。

import

Jupyter Notebook 上で生成したグラフ画像を表示する。

from IPython.display import Image, display_png
from pygraphviz import AGraph

エッジの頭、尾

エッジの頭、尾のスタイル

dir 属性でエッジの頭、尾またはその両方を描画するかどうかを指定できる。

  • front: 頭のみ描画する。
  • back: 尾のみ描画する。
  • both: 頭及び尾の両方を描画する。

arrowhead 属性でエッジの頭のスタイルを指定できる。dir='front' または dir='both' の場合のみ、有効。
arrowtail 属性でエッジの尾のスタイルを指定できる。dir='back' または dir='both' の場合のみ、有効。

G = AGraph(directed=True)
G.add_edge(1, 2, dir='front', arrowhead='empty', arrowsize=0.5)
G.add_edge(1, 3, dir='back', arrowtail='dot', arrowsize=0.5)
G.add_edge(1, 4, dir='both', arrowhead='empty', arrowtail='dot', arrowsize=0.5)

png = G.draw(format='png', prog='dot')
display_png(Image(png))

指定できるスタイルの一覧


エッジの頭、尾の大きさ

arrowsize 属性でエッジの頭、尾の大きさを指定できる。

G = AGraph(directed=True)
G.add_edge(1, 2, arrowsize=1)
G.add_edge(1, 3, arrowsize=2)

png = G.draw(format='png', prog='dot')
display_png(Image(png))


エッジの色

color 属性でエッジの色を指定できる。
fillcolor 属性を指定すると、エッジの頭、尾を別の色で塗りつぶせる。

G = AGraph(directed=True)
G.add_edge(1, 2, color='red')
G.add_edge(1, 4, color='red', fillcolor='green')

png = G.draw(format='png', prog='dot')
display_png(Image(png))


エッジをノードに接続する場所

headport 属性でエッジの頭をノードに接続する場所を指定できる。
tailport 属性でエッジの尾をノードに接続する場所を指定できる。

  • 'n', 'ne', 'e', 'se', 's', 'sw', 'w', 'nw': 方角
  • 'c': ノードの中心に向かって接続する。
  • '_': 自動で接続する場所を調整する。
G = AGraph(strict=False)

ports = ['n', 'ne', 'e', 'se', 's', 'sw', 'w', 'nw']
for port in ports:
    G.add_edge(1, 2, headport=port, headlabel=port, labelfontcolor='blue')
G.add_edge(1, 3, headport='c', headlabel='c', labelfontcolor='blue')
G.add_edge(1, 4, headport='_', headlabel='_', labelfontcolor='blue')

png = G.draw(format='png', prog='dot')
display_png(Image(png))


エッジの太さ

penwidth 属性でエッジの太さを指定できる。

G = AGraph(directed=True)
G.add_edge(1, 2, penwidth=3)

png = G.draw(format='png', prog='dot')
display_png(Image(png))


エッジのスタイル

style 属性でエッジのスタイルを指定できる。

G = AGraph(directed=True)
G.add_edge(1, 2, style='solid')
G.add_edge(1, 3, style='dashed')
G.add_edge(1, 4, style='dotted')
G.add_edge(1, 5, style='bold')

png = G.draw(format='png', prog='dot')
display_png(Image(png))

指定できるスタイルの一覧


ラベル

ラベル名

label 属性でエッジのラベル名を指定できる。

G = AGraph(directed=True)
G.add_edge(1, 2, label='head')

png = G.draw(format='png', prog='dot')
display_png(Image(png))

xlabel 属性で第2のラベルを指定できる。

G = AGraph(directed=True)
G.add_edge(1, 2, label='label', xlabel='label')

png = G.draw(format='png', prog='dot')
display_png(Image(png))


ラベルの色、フォント名、フォントサイズ

fontcolor 属性でラベルの色、fontname 属性でラベルのフォント名、fontsize 属性でラベルのフォントサイズを指定できる。

G = AGraph(directed=True)
G.add_edge(1, 2, label='head',
           fontcolor='blue',
           fontname='DejaVu Serif',
           fontsize=12)

png = G.draw(format='png', prog='dot')
display_png(Image(png))


頭、尾のラベル名

headlabel 属性でエッジの頭のラベル名、taillabel 属性でエッジの尾のラベル名を指定できる。

G = AGraph(directed=True)
G.add_edge(1, 2, headlabel='head', taillabel='tail')

png = G.draw(format='png', prog='dot')
display_png(Image(png))


頭、尾のラベルの色、フォント名、フォントサイズ

labelfontcolor 属性で頭、尾のラベルの色、labelfontname 属性で頭、尾のラベルのフォント名、頭、尾の labelfontsize 属性で頭、尾のラベルのフォントサイズを指定できる。

G = AGraph(directed=True)
G.add_edge(1, 2, headlabel='head',
           taillabel='tail',
           labelfontcolor='blue',
           labelfontsize=12,
           labelfontname='DejaVu Serif')

png = G.draw(format='png', prog='dot')
display_png(Image(png))


頭、尾のラベルの位置を極座標で指定する。

labelangle、labeldistance で頭、尾のラベルのエッジの中心からの角度、距離をそれぞれ指定できる。

G = AGraph(directed=True)
G.add_edge(1, 2, headlabel='head',
           labelangle=90, labeldistance=4)
G.add_edge(1, 3, taillabel='tail',
           labelangle=90, labeldistance=4)

png = G.draw(format='png', prog='dot')
display_png(Image(png))