在數據可視化領域,常常需要將數據按照一定的規則分布,使得數據展示直觀、清晰、一目了然。筆者在工程實踐時,遇到這樣一個問題:如何使得具有多個關系聯系的點邊圖按照樹形布局?
在查閱了大量國內外資料的基礎上,筆者找到了Bill Mill的一篇英文論文:drawing presentable trees。
在這里先簡單地描述一下算法的大概思路:該算法采用深度優先的方式遍歷整個多叉樹。第一步:如果是葉子節點則其x坐標等於其左兄弟的x坐標加上間距distance,如果是非葉子節點則其x坐標等於其左兄弟的x坐標加上間距distance,同時記錄下偏移量(x坐標與子節點的中點之差)。第二步:將所有的子節點按父節點的偏移量移動。第三步:計算多叉樹的輪廓,如果輪廓值小於0則說明左右子樹存在重疊,將右子樹偏移該輪廓值。
此外,分享一下我的翻譯結果:http://www.cnblogs.com/zhongzihao/p/8976675.html。