drawlib.graph(自動レイアウトグラフエンジン)

drawlib.graph は、トポロジー宣言から重なりのないノード座標・ネストされたコンテナ境界・直交/直線エッジ経路を get_layout() で自動計算する 5 種類のグラフレイアウトソルバー(ArchitectureGraph・LayerGraph・TreeGraph・RadialGraph・GridGraph)を提供します。算出された GraphLayout を drawlib.diagrams や drawlib.shapes・drawlib.lines に渡す 2 ステップ構成で柔軟に描画できます。

25_graph_1
2 ステップ・グラフレイアウトワークフロー: LayerGraph.get_layout() によるノード・クラスタ・エッジ座標の自動計算
Source Code
from drawlib.canvas import save, setup
from drawlib.graph import LayerGraph
from drawlib.icons import phosphor
from drawlib.lines import lines
from drawlib.shapes import rectangle
from drawlib.smartarts import BoxList
from drawlib.styles import Colors, Styles
from drawlib.text import text

setup(width=132, height=74)

rectangle(
    (66, 37),
    width=122,
    height=64,
    style=Styles.Neutral.patch(shape_fill_color=Colors.Transparent, line_style="dashed", shape_r=2.5),
)
text(
    (66, 64.5),
    "Step 1: layout = g.get_layout()   ->   Step 2: Render ClusterLayout, EdgeLayout & NodeLayout",
    style=Styles.DarkBold.patch(text_size=11.5),
)

g = LayerGraph(direction="LR", rank_sep=15.0, node_sep=5.0, default_node_width=26.0, default_node_height=10.5)
g.node("ingest")
g.node("validate")
g.node("enrich")
g.node("warehouse")
g.tier("stage", ["validate", "enrich"], layer=1)
g.cluster("etl_cluster", ["validate", "enrich"], padding=3.0, header_height=4.0)
g.edge("ingest", "validate")
g.edge("ingest", "enrich")
g.edge("validate", "warehouse")
g.edge("enrich", "warehouse")

raw = g.get_layout(width=116, height=38, margin=2.0)
cl = raw.clusters["etl_cluster"]
dy = 38.0 - cl.cy

rectangle(
    (cl.cx + 8.0, cl.cy + dy),
    width=cl.width,
    height=cl.height,
    style=Styles.PrimaryNeutral.patch(line_style="dashed", shape_r=2.0),
)
text(
    (cl.cx + 8.0, cl.top + dy - 2.3),
    "ClusterLayout ('etl_cluster')",
    style=Styles.PrimaryBold.patch(text_size=10.0),
)

for edge in raw.edges:
    pts = [(px + 8.0, py + dy) for px, py in edge.points]
    lines(pts, arrow_head="->", style=Styles.DarkBold)

node_specs = [
    ("ingest", "Ingest API", Styles.Neutral, Styles.DarkBold, Styles.PrimaryBold, phosphor.globe),
    ("validate", "Validate", Styles.Neutral, Styles.DarkBold, Styles.PrimaryBold, phosphor.check_circle),
    ("enrich", "DAG Solver", Styles.PrimaryFlat, Styles.WhiteBold, Styles.WhiteBold, phosphor.git_branch),
    ("warehouse", "Analytics DB", Styles.SecondaryNeutral, Styles.DarkBold, Styles.SecondaryBold, phosphor.database),
]
for nid, label, card_st, txt_st, ico_st, icon_fn in node_specs:
    n = raw.nodes[nid]
    cx, cy = n.x + 8.0, n.y + dy
    rectangle((cx, cy), width=n.width, height=n.height, style=card_st.patch(shape_r=1.8))
    icon_fn((cx - 8.5, cy), width=4.4, style=ico_st)
    text((cx + 2.2, cy), label, style=txt_st.patch(text_size=10.5))

solvers = BoxList(
    style=Styles.Neutral,
    text_style=Styles.DarkBold.patch(text_size=10.0),
)
solvers.add("ArchitectureGraph")
solvers.add("LayerGraph", style=Styles.PrimaryFlat, text_style=Styles.WhiteBold.patch(text_size=10.0))
solvers.add("TreeGraph")
solvers.add("RadialGraph")
solvers.add("GridGraph", style=Styles.SecondaryNeutral)
solvers.draw(xy=(9.0, 8.0), box_width=22.8, box_height=7.0, direction="left")

save()

classArchitectureGraph#

2 階層のマクロ/ミクロ構造に対応した宣言的アーキテクチャ・グラフレイアウトソルバーです。VPC・クラスタ・クライアントゾーン・外部 SaaS などの上位コンテナをマクロ軸や 5 方位ゾーンに沿って配置しつつ、内部サービス・サブネット・データベースの座標を各境界内で自動整列します。

from drawlib.graph import ArchitectureGraph

ArchitectureGraph(
    *,
    direction: Literal["LR", "TB"] = "LR",
    container_sep: float | None = None,
    edge_routing: Literal["orthogonal", "straight"] = "orthogonal",
    default_node_width: float = 24.0,
    default_node_height: float = 12.0,
) -> None
パラメータ 型 デフォルト 説明
direction Literal["LR", "TB"] "LR" マクロフローの進行軸("LR" 左→右、または "TB" 上→下)。
container_sep float | None None トップレベルコンテナ間の固定間隔(キャンバス単位)。None の場合は自動調整。
edge_routing Literal["orthogonal", "straight"] "orthogonal" エッジ配線方式("orthogonal" 直交折れ線、または "straight" 直線ポート接続)。
default_node_width float 24.0 width 省略時にノードへ割り当てられるデフォルト幅。
default_node_height float 12.0 height 省略時にノードへ割り当てられるデフォルト高さ。

パブリックメソッド#

メソッド シグネチャ 戻り値 説明
node (id, *, width=None, height=None, ring=None, row=None, col=None, layer=None, group=None, subgroup=None) Node オプションの group / subgroup 所属指定付きでトポロジーにノードを登録します。
edge (src, dst) Edge src から dst への有向接続を登録します(未登録ノード ID は計算時に自動登録されます)。
cluster (id, nodes=None, *, padding=4.0, header_height=3.5, parent=None, order=None, pos=None) Cluster parent ネスト・兄弟順序 order・5 方位 pos("top", "bottom", "left", "right", "center")対応の境界クラスタを登録します。
group (id, *, nodes=None, padding=4.0, header_height=3.5, parent=None, order=None, pos=None) Cluster VPC・ゾーン・サブネット宣言に適したキーワード引数 nodes 版の cluster() エイリアスです。
get_layout (*, width=None, height=None, margin=10.0) GraphLayout 描画を行わずに複合アーキテクチャ座標を計算します(省略時は現在のキャンバス寸法を使用)。

classBaseGraph#

5 種類すべてのグラフレイアウトソルバー(ArchitectureGraph・LayerGraph・TreeGraph・RadialGraph・GridGraph)の抽象基底クラスです。ノード・エッジ・クラスタ登録メソッドと共通の get_layout() インターフェースを提供します。

from drawlib.graph import BaseGraph

BaseGraph(
    *,
    default_node_width: float = 20.0,
    default_node_height: float = 12.0,
) -> None
パラメータ 型 デフォルト 説明
default_node_width float 20.0 node() で width が指定されなかった場合の標準ノード幅。
default_node_height float 12.0 node() で height が指定されなかった場合の標準ノード高さ。

パブリックメソッド#

メソッド シグネチャ 戻り値 説明
node (id, *, width=None, height=None, ring=None, row=None, col=None, layer=None, group=None, subgroup=None) Node グラフトポロジーにノードを登録します。
edge (src, dst) Edge 2 つのノード ID 間の有向エッジを登録します。
cluster (id, nodes=None, *, padding=4.0, header_height=3.5, parent=None, order=None, pos=None) Cluster ノード群を囲むグルーピング境界を登録します。
group (id, *, nodes=None, padding=4.0, header_height=3.5, parent=None, order=None, pos=None) Cluster アーキテクチャコンテナ/グループ境界を登録します。
get_layout (*, width=None, height=None, margin=10.0) GraphLayout キャンバスへ描画せずにノード・エッジ・クラスタの幾何座標を算出します。

classCluster#

g.cluster() または g.group() によって返される、ユーザー登録済みのグルーピング境界を表すデータクラスです。

from drawlib.graph import Cluster

Cluster(
    id: str,
    nodes: list[str] = ...,
    padding: float = 4.0,
    header_height: float = 3.5,
    parent: str | None = None,
    order: int | None = None,
    pos: Literal["top", "bottom", "left", "right", "center"] | None = None,
) -> None
属性 型 デフォルト 説明
id str (必須) クラスタまたはコンテナの一意な識別子。
nodes list[str] [] この境界に直接含まれるメンバーノード ID のリスト。
padding float 4.0 内部ノードおよび子クラスタ周囲の内側余白。
header_height float 3.5 コンテナ上部のタイトルバナー用に確保される追加高さ。
parent str | None None ネスト階層用の親クラスタ ID(VPC 内のサブネットなど)。
order int | None None 兄弟コンテナ間の明示的な並び順インデックス。
pos Literal["top", "bottom", "left", "right", "center"] | None None ArchitectureGraph で使用されるマクロ方位ゾーン配置ヒント。

classClusterLayout#

GraphLayout.clusters に格納される計算済みクラスタ境界ボックスと階層座標モデルです。ArchitectureDiagram の NodeGroup 向けの左下基準座標と、基本図形向けの中心座標の両方を提供します。

from drawlib.graph import ClusterLayout

ClusterLayout(
    id: str,
    bbox: tuple[float, float, float, float],
    parent_id: str | None = None,
    local_bottom_left: tuple[float, float] = (0.0, 0.0),
) -> None
フィールド 型 デフォルト 説明
id str (必須) 登録された Cluster.id に対応するクラスタ識別子。
bbox tuple[float, float, float, float] (必須) キャンバス全体の境界タプル (left, bottom, right, top)。
parent_id str | None None 外側コンテナにネストされている場合の親クラスタ ID(トップレベルは None)。
local_bottom_left tuple[float, float] (0.0, 0.0) 親クラスタの左下原点を基準としたローカル左下 (x, y) 座標。

プロパティ#

プロパティ 型 説明
bottom float 下端 Y 座標(bbox[1])。
bottom_left tuple[float, float] グローバル左下 (left, bottom) 座標(トップレベル NodeGroup にそのまま渡せます)。
center tuple[float, float] クラスタのグローバル中心 (cx, cy) 座標。
cx float クラスタ中心の X 座標。
cy float クラスタ中心の Y 座標。
height float クラスタの高さ(top - bottom)。
left float 左端 X 座標(bbox[0])。
right float 右端 X 座標(bbox[2])。
size tuple[float, float] クラスタの寸法 (width, height)。
top float 上端 Y 座標(bbox[3])。
width float クラスタの幅(right - left)。
xy tuple[float, float] center((cx, cy))のエイリアス。中心アンカーの rectangle() に最適です。

classEdge#

g.edge(src, dst) によって返される、2 つのノード間の有向接続を表すデータクラスです。

from drawlib.graph import Edge

Edge(
    src: str,
    dst: str,
) -> None
属性 型 デフォルト 説明
src str (必須) 有向エッジの始点となるソースノード ID。
dst str (必須) 有向エッジの終点となる宛先ノード ID。

classEdgeLayout#

GraphLayout.edges に格納される計算済みエッジの接続ポート座標と中間折れ点(ウェイポイント)モデルです。

from drawlib.graph import EdgeLayout

EdgeLayout(
    src: str,
    dst: str,
    src_port: tuple[float, float],
    dst_port: tuple[float, float],
    waypoints: list[tuple[float, float]] = ...,
) -> None
フィールド 型 デフォルト 説明
src str (必須) 始点ノード識別子。
dst str (必須) 終点ノード識別子。
src_port tuple[float, float] (必須) 始点ノード外周上の接続ポート (x, y) 座標。
dst_port tuple[float, float] (必須) 終点ノード外周上の接続ポート (x, y) 座標。
waypoints list[tuple[float, float]] [] src_port と dst_port の間の中間折れ点 (x, y) リスト。

プロパティ#

プロパティ 型 説明
points list[tuple[float, float]] lines(edge.points, arrow_head="->") にそのまま渡せる全頂点列 [src_port, *waypoints, dst_port]。
mid_xy tuple[float, float] エッジラベルの配置に適した経路上の幾何学的中点 (mx, my)。

classGraphLayout#

すべてのグラフソルバーの get_layout() が返す完全な幾何計算結果オブジェクトです。layout[key] によるノード/クラスタの辞書風ルックアップ、print(layout) による人間可読な座標ダンプ、および .offset() による計算後の微調整をサポートします。

from drawlib.graph import GraphLayout

GraphLayout(
    nodes: dict[str, NodeLayout] = ...,
    edges: list[EdgeLayout] = ...,
    clusters: dict[str, ClusterLayout] = ...,
    width: float = 100.0,
    height: float = 100.0,
    ring_radii: dict[int, float] = ...,
) -> None
フィールド 型 デフォルト 説明
nodes dict[str, NodeLayout] {} ノード ID から計算済み NodeLayout へのマッピング。
edges list[EdgeLayout] [] 計算済み EdgeLayout 経路の順序付きリスト。
clusters dict[str, ClusterLayout] {} クラスタ ID から計算済み ClusterLayout へのマッピング。
width float 100.0 レイアウト対象のキャンバス幅。
height float 100.0 レイアウト対象のキャンバス高さ。
ring_radii dict[int, float] {} RadialGraph が設定するリング番号から半径へのマッピング。

パブリックメソッド#

メソッド シグネチャ 戻り値 説明
offset (node_id: str, dx: float = 0.0, dy: float = 0.0) Self 指定ノードを (dx, dy) だけ平行移動し(.xy・.local_xy・接続エッジのポート座標も再計算)、メソッドチェーン用に self を返します。

classGridGraph#

宣言的 2D マトリクスグリッド・レイアウトソルバーです。設定可能な列数・充填順序("row-major" / "column-major")・明示的な (row, col) セル固定・セル間チャネル配線を用いてノードを規則的な格子状に配置します。

from drawlib.graph import GridGraph

GridGraph(
    columns: int = 3,
    *,
    rows: int | None = None,
    order: Literal["row-major", "column-major"] = "row-major",
    col_sep: float | None = None,
    row_sep: float | None = None,
    edge_routing: Literal["smart", "orthogonal", "straight"] = "smart",
    default_node_width: float = 20.0,
    default_node_height: float = 12.0,
) -> None
パラメータ 型 デフォルト 説明
columns int 3 グリッドの列数(>= 1)。
rows int | None None 明示的な行数(None の場合はノード数から自動算出)。
order Literal["row-major", "column-major"] "row-major" 位置未指定ノードの自動スロット割り当て順序。
col_sep float | None None 列間の水平ギャップ(None の場合はキャンバス幅に合わせて自動調整)。
row_sep float | None None 行間の垂直ギャップ(None の場合はキャンバス高さに合わせて自動調整)。
edge_routing Literal["smart", "orthogonal", "straight"] "smart" エッジ配線方式("smart" は非隣接セル間の接続をグリッド通路へ迂回させます)。
default_node_width float 20.0 デフォルトのセルノード幅。
default_node_height float 12.0 デフォルトのセルノード高さ。

パブリックメソッド#

メソッド シグネチャ 戻り値 説明
cell (cell_id, row=None, col=None, *, width=None, height=None) Node オプションの 0 始まり (row, col) 位置を指定してグリッドセルノードを登録する便利メソッドです。
cluster_row (row, cluster_id, *, padding=4.0, header_height=3.5) Cluster 指定した row(0 始まり)の全ノードを囲むクラスタ境界を登録します。
cluster_column (col, cluster_id, *, padding=4.0, header_height=3.5) Cluster 指定した col(0 始まり)の全ノードを囲むクラスタ境界を登録します。
node (id, *, width=None, height=None, ring=None, row=None, col=None, layer=None, group=None, subgroup=None) Node グリッドトポロジーにノードを登録します。
edge (src, dst) Edge 2 つのグリッドノード間の接続を登録します。
cluster (id, nodes=None, *, padding=4.0, header_height=3.5, parent=None, order=None, pos=None) Cluster 任意のセル群を囲むカスタムクラスタを登録します。
group (id, *, nodes=None, padding=4.0, header_height=3.5, parent=None, order=None, pos=None) Cluster キーワード引数 nodes 版の cluster() エイリアスです。
get_layout (*, width=None, height=None, margin=10.0) GraphLayout 描画を行わずにマトリクス座標とエッジ経路を算出します。

classLayerGraph#

杉山フレームワーク(閉路除去・最長経路レイヤー割り当て・重心法によるエッジ交差最小化)を用いた宣言的階層型 DAG レイアウトソルバーです。CI/CD パイプライン、ETL/Airflow データリネージ、タスク依存関係グラフに最適です。

from drawlib.graph import LayerGraph

LayerGraph(
    *,
    direction: Literal["LR", "TB"] = "LR",
    rank_sep: float | None = None,
    node_sep: float | None = None,
    edge_routing: Literal["orthogonal", "straight"] = "orthogonal",
    default_node_width: float = 22.0,
    default_node_height: float = 12.0,
) -> None
パラメータ 型 デフォルト 説明
direction Literal["LR", "TB"] "LR" レイヤー進行軸("LR" 左→右、または "TB" 上→下)。
rank_sep float | None None 隣接ランク/レイヤー間の固定距離(None の場合は自動調整)。
node_sep float | None None 同一ランク内の並列ノード間の固定距離(None の場合は自動調整)。
edge_routing Literal["orthogonal", "straight"] "orthogonal" エッジ配線方式("orthogonal" 直交折れ線、または "straight" 直線接続)。
default_node_width float 22.0 デフォルトのノード幅。
default_node_height float 12.0 デフォルトのノード高さ。

パブリックメソッド#

メソッド シグネチャ 戻り値 説明
tier (name, nodes, *, layer=None) None 複数のノード ID を同一レイヤー/ランク番号(0, 1, ...)へ明示的に固定します。
node (id, *, width=None, height=None, ring=None, row=None, col=None, layer=None, group=None, subgroup=None) Node オプションの layer ランク指定付きでノードを登録します。
edge (src, dst) Edge src から dst への有向依存エッジを登録します。
cluster (id, nodes=None, *, padding=4.0, header_height=3.5, parent=None, order=None, pos=None) Cluster ステージ内のノード群を囲む境界クラスタを登録します。
group (id, *, nodes=None, padding=4.0, header_height=3.5, parent=None, order=None, pos=None) Cluster キーワード引数 nodes 版の cluster() エイリアスです。
get_layout (*, width=None, height=None, margin=10.0) GraphLayout 描画を行わずに階層型 DAG 座標を計算します。

classNode#

g.node()・g.cell()・g.spoke()・g.child() によって返される、グラフトポロジー内のユーザー登録ノードを表すデータクラスです。

from drawlib.graph import Node

Node(
    id: str,
    width: float | None = None,
    height: float | None = None,
    ring: int | None = None,
    row: int | None = None,
    col: int | None = None,
    layer: int | None = None,
    group: str | None = None,
    subgroup: str | None = None,
) -> None
属性 型 デフォルト 説明
id str (必須) 一意なノード識別子文字列。
width float | None None 個別ノード幅(None の場合はソルバーの default_node_width を継承)。
height float | None None 個別ノード高さ(None の場合はソルバーの default_node_height を継承)。
ring int | None None RadialGraph 用の同心円リング番号(0 = 中心ハブ)。
row int | None None GridGraph 用の明示的な行番号(0 始まり)。
col int | None None GridGraph 用の明示的な列番号(0 始まり)。
layer int | None None LayerGraph 用の明示的なレイヤー/ランク番号(0 始まり)。
group str | None None ArchitectureGraph 用のトップレベルコンテナ ID。
subgroup str | None None ArchitectureGraph 用の group 内ネストサブコンテナ ID。

classNodeLayout#

GraphLayout.nodes に格納される計算済みノードのグローバル座標・親クラスタ相対座標・寸法モデルです。

from drawlib.graph import NodeLayout

NodeLayout(
    id: str,
    xy: tuple[float, float],
    width: float,
    height: float,
    parent_id: str | None = None,
    local_xy: tuple[float, float] = (0.0, 0.0),
) -> None
フィールド 型 デフォルト 説明
id str (必須) Node.id に対応するノード識別子。
xy tuple[float, float] (必須) キャンバス上のグローバル中心 (cx, cy) 座標。
width float (必須) 確定したノード幅(キャンバス単位)。
height float (必須) 確定したノード高さ(キャンバス単位)。
parent_id str | None None クラスタに所属している場合の親クラスタ ID(未所属時は None)。
local_xy tuple[float, float] (0.0, 0.0) 親クラスタの bottom_left 原点からの相対中心 (cx, cy) 座標(NodeGroup.add() 用)。

プロパティ#

プロパティ 型 説明
bottom float 下端 Y 座標(y - height / 2)。
bottom_left tuple[float, float] グローバル左下 (left, bottom) コーナー座標。
center tuple[float, float] xy(グローバル中心 (x, y))のエイリアス。
left float 左端 X 座標(x - width / 2)。
local_bottom_left tuple[float, float] 親クラスタの bottom_left 原点からの相対左下コーナー座標。
right float 右端 X 座標(x + width / 2)。
size tuple[float, float] ノード寸法 (width, height)。
top float 上端 Y 座標(y + height / 2)。
x float グローバル中心 X 座標(xy[0])。
y float グローバル中心 Y 座標(xy[1])。

classRadialGraph#

宣言的な放射状・同心円リング・グラフレイアウトソルバーです。中心ハブを center に配置し、接続されたスポークノードを等角度間隔で同心円軌道上に展開します(各リングの半径は GraphLayout.ring_radii から取得して軌道円の描画に利用できます)。

from drawlib.graph import RadialGraph

RadialGraph(
    hub: str | None = None,
    *,
    center: tuple[float, float] | None = None,
    radius_step: float | None = None,
    start_angle: float = 0.0,
    angle_range: float = 360.0,
    default_node_width: float = 20.0,
    default_node_height: float = 12.0,
) -> None
パラメータ 型 デフォルト 説明
hub str | None None リング 0 に配置する中心ハブのノード ID(None の場合はトポロジーから自動推定)。
center tuple[float, float] | None None ハブ中心の明示的な (cx, cy) 座標(None の場合はキャンバス中央)。
radius_step float | None None 同心円リングごとの半径ステップ幅(None の場合はキャンバスに収まるよう自動調整)。
start_angle float 0.0 開始角度(度数法、0.0 = +X 軸方向、反時計回り)。
angle_range float 360.0 展開する総角度範囲(360.0 全周、180.0 半円/扇形など)。
default_node_width float 20.0 デフォルトのノード幅。
default_node_height float 12.0 デフォルトのノード高さ。

パブリックメソッド#

メソッド シグネチャ 戻り値 説明
spoke (parent, spoke_id, *, ring=None, width=None, height=None) Node スポークノード spoke_id を登録し、parent からのエッジを同時に張る便利メソッドです。
node (id, *, width=None, height=None, ring=None, row=None, col=None, layer=None, group=None, subgroup=None) Node オプションの同心円 ring インデックス付きでノードを登録します。
edge (src, dst) Edge 放射接続またはスポーク間エッジを登録します。
cluster (id, nodes=None, *, padding=4.0, header_height=3.5, parent=None, order=None, pos=None) Cluster ノード群を囲むグルーピング境界を登録します。
group (id, *, nodes=None, padding=4.0, header_height=3.5, parent=None, order=None, pos=None) Cluster キーワード引数 nodes 版の cluster() エイリアスです。
get_layout (*, width=None, height=None, margin=10.0) GraphLayout 描画を行わずに放射状座標・エッジポート・ring_radii を計算します。

classTreeGraph#

Reingold-Tilford / Buchheim アルゴリズムを用いた宣言的ツリー・グラフレイアウトソルバーです。部分木同士の重なりを防ぎながら、親ノードを子グループの中央上部("TB")または中央左横("LR")へ対称的に整列します。

from drawlib.graph import TreeGraph

TreeGraph(
    *,
    root: str | None = None,
    direction: Literal["TB", "LR"] = "TB",
    level_sep: float | None = None,
    sibling_sep: float | None = None,
    default_node_width: float = 22.0,
    default_node_height: float = 12.0,
    edge_routing: Literal["orthogonal", "straight"] = "orthogonal",
) -> None
パラメータ 型 デフォルト 説明
root str | None None 明示的なルートノード ID(None の場合は入次数 0 のノードから自動検出)。
direction Literal["TB", "LR"] "TB" ツリーの展開方向("TB" 上→下、または "LR" 左→右)。
level_sep float | None None ツリー階層深さ間の固定距離(None の場合は自動調整)。
sibling_sep float | None None 隣接する兄弟ノード/部分木間の最小間隔(None の場合は自動調整)。
default_node_width float 22.0 デフォルトのノード幅。
default_node_height float 12.0 デフォルトのノード高さ。
edge_routing Literal["orthogonal", "straight"] "orthogonal" 親子間コネクタの配線スタイル("orthogonal" 直交エルボー分岐、または "straight" 直線)。

パブリックメソッド#

メソッド シグネチャ 戻り値 説明
child (parent, child_id, *, width=None, height=None) Node 子ノード child_id(および未登録の parent)を登録し、parent -> child_id エッジを追加する便利メソッドです。
node (id, *, width=None, height=None, ring=None, row=None, col=None, layer=None, group=None, subgroup=None) Node ツリーノードを登録します。
edge (src, dst) Edge 親から子へのツリーエッジを登録します。
cluster (id, nodes=None, *, padding=4.0, header_height=3.5, parent=None, order=None, pos=None) Cluster 部分木や階層レベルを囲む境界クラスタを登録します。
group (id, *, nodes=None, padding=4.0, header_height=3.5, parent=None, order=None, pos=None) Cluster キーワード引数 nodes 版の cluster() エイリアスです。
get_layout (*, width=None, height=None, margin=10.0) GraphLayout 描画を行わずに整列されたツリー座標とコネクタ経路を計算します。