樹狀結構
範例 · 樹狀結構配置會使用 Reingold–Tilford “tidy” 演算法 來產生樹狀結構的整齊節點連結圖,並由 Buchheim et al. 改良為線性時間執行。整齊的樹狀結構通常比 樹狀圖 更為緊湊。
tree()
原始碼 · 建立一個具有預設設定的新樹狀結構配置。
tree(root)
原始碼 · 配置指定的 root 階層結構,並在 root 及其後代中指派以下屬性
- node.x - 節點的 x 座標
- node.y - 節點的 y 座標
座標 x 和 y 代表任意座標系統;例如,你可以將 x 視為角度,將 y 視為半徑,以產生 徑向配置。你可能想在將階層結構傳遞給樹狀結構配置之前,呼叫 root.sort。
tree.size(size)
原始碼 · 如果指定了 size,則將此樹狀結構佈局的大小設定為指定的數字 [width, height] 二元陣列,並傳回此樹狀結構佈局。如果未指定 size,則傳回目前的佈局大小,預設為 [1, 1]。佈局大小為 null 表示將改用 節點大小。座標 x 和 y 表示任意座標系統;例如,若要產生 徑向佈局,大小 [360, radius] 對應於寬度 360° 和深度 radius。
tree.nodeSize(size)
原始碼 · 如果指定了 size,則將此樹狀結構佈局的節點大小設定為指定的數字 [width, height] 二元陣列,並傳回此樹狀結構佈局。如果未指定 size,則傳回目前的節點大小,預設為 null。節點大小為 null 表示將改用 佈局大小。當指定了節點大小時,根節點總是定位在 ⟨0, 0⟩。
tree.separation(separation)
原始碼 · 如果指定了 separation,則將分離器存取器設定為指定的函式,並傳回此樹狀結構佈局。如果未指定 separation,則傳回目前的分離器存取器,預設為
function separation(a, b) {
return a.parent == b.parent ? 1 : 2;
}
更適合徑向佈局的變異會依據半徑成比例地縮小分離間距
function separation(a, b) {
return (a.parent == b.parent ? 1 : 2) / a.depth;
}
分離器存取器用於分離相鄰節點。分離函式會傳入兩個節點 a 和 b,並必須傳回所需的間距。這些節點通常是同層節點,但如果佈局決定將此類節點相鄰放置,則這些節點的關聯性可能更遠。