2013-09-26 41 views
0

我使用的是樹的佈局和類似的代碼http://mbostock.github.io/d3/talk/20111018/tree.htmld3.js樹佈局需要擴大爲節點開放,不壓縮

我修改它自上而下的方向。 隨着每個節點的打開/展開,其他開放節點將進行壓縮以適應SVG元素中的所有內容。有沒有可能阻止這種情況?我認爲修改每個節點的x部分將是方法,但一直未能實現。節點移過來,但仍然壓縮在一起。

也想知道如何改變連接線從bezier到直角/直線。也許需要一個單獨的問題。

回答

0

壓縮在樹形佈局(及其一部分)中是自動的。沒有辦法關掉它。但是,您可以簡單地將SVG放大到足以包含整個展開的樹而不壓縮。請注意,這意味着除非屏幕足夠大,否則即使可見的所有內容都適合屏幕,滾動條也會顯示。

連接節點的鏈接使用示例中的diagonal line generator生成。原則上,您可以將其替換爲任何其他線條生成器(例如d3.svg.line),但實際上,由於對角線生成器以特殊方式訪問源節點和目標節點,因此需要進行一些更改。對於法線生成器,您需要將此結構轉換爲雙元素數組,併爲每個元素指定如何訪問x/y座標。然後你可以使用任何插值來獲得你想要的曲線。

+0

謝謝拉斯。我爲SVG創建了一個更大的「畫布」,但樹圖仍然壓縮。它似乎取自根/父節點下一級的大小,並試圖保持其大小。至於鏈接,我發現了對角線生成器,並且看到它創建了一個類似於「M 100 100 C 100 150 ....」的路徑字符串。我發現它令人困惑,它可以使用或不使用參數進行調用,並仍然產生一條路徑。我需要更多地研究它。 –

+0

您還需要明確設置[樹形佈局的大小](https://github.com/mbostock/d3/wiki/Tree-Layout#wiki-size)。 –

+0

哦並且給出的對角線生成器的參數是隱含的,即您爲'd'指定的參數實際上是一個函數。 –