1. 程式人生 > >布局算法之樹布局

布局算法之樹布局

記錄 聯系 展示 算法 方式 mil 計算 樹形布局 實踐

在數據可視化領域,常常需要將數據按照一定的規則分布,使得數據展示直觀、清晰、一目了然。筆者在工程實踐時,遇到這樣一個問題:如何使得具有多個關系聯系的點邊圖按照樹形布局?

在查閱了大量國內外資料的基礎上,筆者找到了Bill Mill的一篇英文論文:drawing presentable trees。

在這裏先簡單地描述一下算法的大概思路:該算法采用深度優先的方式遍歷整個多叉樹。第一步:如果是葉子節點則其x坐標等於其左兄弟的x坐標加上間距distance,如果是非葉子節點則其x坐標等於其左兄弟的x坐標加上間距distance,同時記錄下偏移量(x坐標與子節點的中點之差)。第二步:將所有的子節點按父節點的偏移量移動。第三步:計算多叉樹的輪廓,如果輪廓值小於0則說明左右子樹存在重疊,將右子樹偏移該輪廓值。

布局算法之樹布局