d3之兩個節(jié)點之間多條連線解決方案。

問題描述:需實現(xiàn),兩個節(jié)點之間,有多條連線,且連線不重合,每條連線有名稱。

難點:在d3中,未使用布局,需要把數(shù)據(jù)處理成符合d3畫圖的樣子才行。連線使用的是'path',根據(jù)連線的 ‘startKey’ 字段和 ‘endKey’ 來設(shè)定 source 和 target。因為兩個節(jié)點之間的多條線,所以source 和target 相同,線會重合。此時需要想辦法來添加偏移量。

首先要清楚,要添加偏移量,需要知道哪些連線是一組的,先要把兩個節(jié)點之間的連線分成一組。這個思路卡了兩天。

其實就是對原來的連接數(shù)組進行遍歷處理,把start和end都相同的即兩個節(jié)點之間的線放在一個數(shù)組里面。再將這些數(shù)組放到一個新數(shù)組里面,組成一個二維數(shù)組。

當(dāng)數(shù)據(jù)處理完畢之后,以前沒有過處理二維數(shù)組的經(jīng)驗,不知道該怎么用d3來處理它,分不清svg是什么結(jié)構(gòu),該怎么循環(huán)這個數(shù)組。這塊卡了兩天。

d3是一門把數(shù)據(jù)和dom element綁定的語言,所以應(yīng)該把數(shù)據(jù)結(jié)構(gòu)和svg結(jié)合起來,不能單獨考慮一個,不考慮另外一個。

現(xiàn)在的數(shù)據(jù)結(jié)構(gòu)是一個二維數(shù)組,里面的每一項代表每兩個節(jié)點之間的連線,對應(yīng)的svg結(jié)構(gòu)應(yīng)該是一個類為'link'的<g>,為每一項都與<g> 綁定起來。

然后再對綁定好的選擇集進行遍歷處理,為link繪制路徑,每個link的數(shù)據(jù)結(jié)構(gòu)是一個一維數(shù)組,里面存放的是兩個節(jié)點之間的每條連線的數(shù)據(jù),對應(yīng)的svg結(jié)構(gòu)應(yīng)該是一個類為'path'的<g>。在綁定之前,應(yīng)該先對數(shù)組中的數(shù)據(jù)進行處理,因為現(xiàn)在的source 和 target的坐標(biāo)還相同,應(yīng)該先給加上不同的偏移量,然后組成一個新的一維數(shù)組。此時這個數(shù)組就是正常的連線數(shù)據(jù),按照平時一條連線那么處理就可以了。綁定好以后,append('path')以及append('text').

tick()里面關(guān)于連線數(shù)據(jù)的更新也是一個難點,因為你結(jié)構(gòu)不清楚之前,這塊會一團糟,你不知道該怎么寫。只有理清楚了數(shù)據(jù)結(jié)構(gòu)和svg結(jié)構(gòu),自然而然就好些了。

現(xiàn)在只需 selectAll('link')繼續(xù)遍歷為每一個Link繪制path。

還有一種解決方案:就是使用弧線,path的'd' 屬性使用M arc。需要對arc進行偏移,從同一個點出發(fā)。

周六日有時間完善一下。附個demo。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • d3 (核心部分)選擇集d3.select - 從當(dāng)前文檔中選擇一系列元素。d3.selectAll - 從當(dāng)前文...
    謝大見閱讀 3,577評論 1 4
  • 對集合的操作 關(guān)于d3.attr 一個可以處理很多情況的函數(shù),當(dāng)只傳入一個參數(shù)時,如果是string,則返回該屬性...
    陳堅生閱讀 2,768評論 0 2
  • Data Visualization with D3 D3: SVG中的jQurey 1. Add Documen...
    王策北閱讀 875評論 0 2
  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,306評論 2 89
  • 為什么要寫這個? 關(guān)于學(xué)費介紹一直是我最頭疼的一項一、艾教練本身不善言辭,和學(xué)員初次見面容易緊張,怕介紹不清楚 二...
    一個安靜的游泳教練閱讀 2,708評論 1 3

友情鏈接更多精彩內(nèi)容