Pynote

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

graphviz - ノードの属性

ノードの属性

名前 説明
color 枠線の色を指定する。
penwidth 枠線の太さを指定する。
style 枠線のスタイルを指定する。
fillcolor style='filled' の場合、背景色を指定する。
label ラベルを指定する。
fontcolor ラベルの色を指定する。
fontname ラベルのフォントを指定する。
fontsize ラベルのフォントサイズを指定する。
labelloc ラベルの垂直方向のアラインメントを指定する。
margin ラベルのマージンを指定する。
width ノードの幅を指定する。
height ノードの高さを指定する。
fixedsize ノードの大きさを固定するかどうかを指定する。
shape ノードの形状を指定する。
skew style='filled' の場合、skew を指定する。
sides style='filled' の場合、辺の数を指定する。
regular style='filled' の場合、正多角形にするかどうかを指定する。
distortion style='filled' の場合、下端の辺に対して上端の辺をどのぐらい長くするかを指定する。

import

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

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

ノードの枠線

枠線の色

color 属性でノードの枠線の色を指定できる。

G = AGraph()
G.add_node(1, color='red')
G.add_node(2, color='blue')

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


枠線の太さ

penwidth 属性でノードの枠線の太さを指定できる。

G = AGraph()
G.add_node(1, penwidth=1)
G.add_node(2, penwidth=2)

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


枠線のスタイル

style 属性でノードの枠線のスタイルを指定できる。

G = AGraph()
G.add_node(1, style='dashed')
G.add_node(2, style='bold')

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

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


ノードの背景色

style='filled' の場合、ノードの背景を塗りつぶす。
color 属性が指定されている場合は枠線と同じ色、fillcolor 属性が指定されている場合はその色で塗りつぶされる。

G = AGraph()
G.add_node(1, color='red')
G.add_node(2, color='blue')

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


ノードのラベル

ラベル名

label 属性でラベル名を指定できる。
指定しない場合は、ノードの名前がラベル名として使用される。

G = AGraph()
G.add_node(1, label='label 1')
G.add_node(2, label='label 2')

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


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

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

G = AGraph()
G.add_node(1, fontcolor='red', fontname='DejaVu Serif', fontsize=15)
G.add_node(2, fontcolor='blue', fontname='Liberation Sans', fontsize=15)

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


ラベルの垂直方向のアラインメント

labelloc でノード内のラベルの垂直方向のアラインメントを指定できる。

  • t: 上揃え (top)
  • c: 中央揃え (center)
  • b: 下揃え (bottom)
G = AGraph()
G.add_node(1, label='t', labelloc='t')
G.add_node(2, label='c', labelloc='c')
G.add_node(3, label='b', labelloc='b')

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


ラベルのマージン

margin 属性で枠線とラベルのマージンを指定できる。

G = AGraph()
G.add_node(1, margin=0.2)
G.add_node(2, margin=0.4)

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


ノードの大きさ

width 属性でノードの幅、height 属性でノードの高さを指定できる。
fixedsize=True の場合、width、height 属性で指定した大きさに固定する。
fixedsize=False の場合、ラベルがはみ出すような場合は width、height 属性を無視して、大きさは自動で調整される。

G = AGraph()
G.add_node(1, fixedsize=True, width=0.5, height=0.3)
G.add_node(2, fixedsize=True, width=0.7, height=0.7)

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


ノードの形状

shape 属性でノードの形状を指定できる。

G = AGraph()
G.add_node(1, shape='star')
G.add_node(2, shape='box')

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

指定できる形状の一覧


skew

shape='polygon' の場合、skew 属性でポリゴンの skew を指定できる。

G = AGraph()
G.add_node(1, shape='polygon', skew=1)
G.add_node(2, shape='polygon', skew=2)
G.add_node(3, shape='polygon', skew=3)

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


多角形の場合の辺の数

shape='polygon' の場合、sides で辺の数を指定できる。

G = AGraph()
G.add_node(1, label='3', shape='polygon', sides=3)
G.add_node(2, label='4', shape='polygon', sides=4)
G.add_node(3, label='5', shape='polygon', sides=5)

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


多角形の場合、正多角形にするかどうか

shape='polygon' の場合、regular=True を指定すると、正多角形になる。

G = AGraph()
G.add_node(1, label='3', shape='polygon', sides=3, regular=True)
G.add_node(2, label='4', shape='polygon', sides=4, regular=True)
G.add_node(3, label='5', shape='polygon', sides=5, regular=True)

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


多角形の場合、下端の辺に対して上端の辺をどのぐらい長くするか

shape='polygon' の場合、distortion 属性で下端の辺に対して上端の辺をどのぐらい長くするかを指定できる。

G = AGraph()
G.add_node(1, label='0.7', shape='polygon', distortion=0.7)
G.add_node(2, label='1.0', shape='polygon', distortion=1.0)
G.add_node(3, label='-0.7', shape='polygon', distortion=-0.7)

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