TWaver - 專注UI技術

          http://twaver.servasoft.com/
          posts - 171, comments - 191, trackbacks - 0, articles - 2
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          日歷

          <2015年5月>
          262728293012
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          新聞檔案(1)

          相冊

          搜索

          •  

          最新評論

          前段時間,有個項目需要顯示一個很大的樹形拓撲結構圖,而布局怎么都不好看。要生成一顆比較布局規矩、好看的樹狀圖,一個成熟、高效的樹形布局算法必不可少。Reingold Tilford是常用的一個,大家可以google一下。這個算法最先是由Edward Reingold和John Tilford一起發表的,并由他們的名字命名。有興趣的同學,可以研究一下這篇1981年的論文:http://emr.cs.iit.edu/~reingold/tidier-drawings.pdf,里面給出了這個算法的原理和邏輯代碼。這個算法的優點是邏輯相對簡單,效率高。不過用js寫一遍也要消耗很多腦細胞。還要,twaver直接提供了這種算法和自動布局,我們可以直接使用。 下面看一看這種布局的用途。利用Reingold Tilford樹算法,我們可以把一個樹形結構的數據,用不重疊、緊湊、分層的形式展示出來。最直接的用法就是直接生成一棵從左到右的樹,如下圖: HTML5拓撲樹1
          圖比較長,所以我們咔嚓了一刀,下面是后面一半的圖:
              HTML5拓撲樹2  
          其實RT樹也可以做各種變化。例如我們把縱向旋轉成一圈進行排列,就會形成環形的RT樹:
          HTML5拓撲樹3
          看到這些,我們可能會想起D3.js。D3也可以做出這些圖形效果。相比之下,twaver使用起來會比較簡單,兩行代碼就可以調用任意形狀的自動布局算法:
          1 //創建Autolayouter并綁定DataBox
          2 
          3 var autoLayouter = new twaver.layout.AutoLayouter(box);
          4 
          5 //開始布局,參數分別為布局類型和回掉函數
          6 
          7 autoLayouter.doLayout(type,callback);

          另外,在實際項目使用中,數據往往需要多種形式進行展現,例如樹、表格等配合拓撲圖進行一體的、全方位的展示。這時twaver的優勢就比較明顯了。
          下面這張圖,數據通過右邊的拓撲圖和左邊的樹同時展示,甚至樹上直接提供了勾選功能,選中后拓撲圖也會跟著選中(深色陰影)。這種應用在twaver里面可以直接new一個Tree和Network,與同一個box關聯即可。用D3估計還要其它的樹組件并做交互同步,可能比較麻煩。
          HTML5拓撲布局  
          不論哪種技術和產品,只要適合我們的使用需求就好。簡單、輕量、好用,就是好產品。
          需要源代碼的同學請與我們聯系索取: info@servasoft.com



          評論

          # re: HTML5復雜拓撲圖(五) Reingold Tilford樹  回復  更多評論   

          2016-01-10 16:26 by 流量村
          現在一般用第三方的更合理些

          # re: HTML5復雜拓撲圖(五) Reingold Tilford樹  回復  更多評論   

          2016-04-25 18:14 by 司馬青衫
          這個太復雜了。看起啦都累啊

          膜拜大神司馬懿和諸葛亮誰厲害http://www.simaqingshan.com/post/569.html

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 汾西县| 灵山县| 襄垣县| 无锡市| 定结县| 荥阳市| 怀仁县| 灵璧县| 垫江县| 丹寨县| 大渡口区| 芷江| 江城| 抚松县| 讷河市| 沙洋县| 秭归县| 科技| 平安县| 灵武市| 郑州市| 同江市| 定西市| 商城县| 定南县| 和硕县| 景德镇市| 绥化市| 会同县| 吉木乃县| 嘉禾县| 阿瓦提县| 乐安县| 那坡县| 玉门市| 二连浩特市| 竹山县| 文昌市| 宜章县| 贺州市| 惠东县|