跳到內容

樹狀結構

/Chaos/Chaos/Eros/Chaos/Erebus/Chaos/Tartarus/Chaos/Gaia/Chaos/Gaia/Mountains/Chaos/Gaia/Pontus/Chaos/Gaia/UranusEros/Chaos/ErosErebus/Chaos/ErebusTartarus/Chaos/TartarusMountains/Chaos/Gaia/MountainsPontus/Chaos/Gaia/PontusUranus/Chaos/Gaia/UranusChaos/ChaosGaia/Chaos/Gaia

範例 · 樹狀結構配置會使用 Reingold–Tilford “tidy” 演算法 來產生樹狀結構的整齊節點連結圖,並由 Buchheim et al. 改良為線性時間執行。整齊的樹狀結構通常比 樹狀圖 更為緊湊。

tree()

原始碼 · 建立一個具有預設設定的新樹狀結構配置。

tree(root)

原始碼 · 配置指定的 root 階層結構,並在 root 及其後代中指派以下屬性

  • node.x - 節點的 x 座標
  • node.y - 節點的 y 座標

座標 xy 代表任意座標系統;例如,你可以將 x 視為角度,將 y 視為半徑,以產生 徑向配置。你可能想在將階層結構傳遞給樹狀結構配置之前,呼叫 root.sort

tree.size(size)

原始碼 · 如果指定了 size,則將此樹狀結構佈局的大小設定為指定的數字 [width, height] 二元陣列,並傳回此樹狀結構佈局。如果未指定 size,則傳回目前的佈局大小,預設為 [1, 1]。佈局大小為 null 表示將改用 節點大小。座標 xy 表示任意座標系統;例如,若要產生 徑向佈局,大小 [360, radius] 對應於寬度 360° 和深度 radius

tree.nodeSize(size)

原始碼 · 如果指定了 size,則將此樹狀結構佈局的節點大小設定為指定的數字 [width, height] 二元陣列,並傳回此樹狀結構佈局。如果未指定 size,則傳回目前的節點大小,預設為 null。節點大小為 null 表示將改用 佈局大小。當指定了節點大小時,根節點總是定位在 ⟨0, 0⟩。

tree.separation(separation)

原始碼 · 如果指定了 separation,則將分離器存取器設定為指定的函式,並傳回此樹狀結構佈局。如果未指定 separation,則傳回目前的分離器存取器,預設為

js
function separation(a, b) {
  return a.parent == b.parent ? 1 : 2;
}

更適合徑向佈局的變異會依據半徑成比例地縮小分離間距

js
function separation(a, b) {
  return (a.parent == b.parent ? 1 : 2) / a.depth;
}

分離器存取器用於分離相鄰節點。分離函式會傳入兩個節點 ab,並必須傳回所需的間距。這些節點通常是同層節點,但如果佈局決定將此類節點相鄰放置,則這些節點的關聯性可能更遠。