1
我一直在使用 http://bl.ocks.org/mbostock/4063570 作爲指導,試驗D3的集羣功能。在HTML中定義的SVG標籤vs由D3添加
如果我仔細複製示例,它可以正常工作,就像我見過的所有其他D3 SVG示例一樣,SVG元素是由D3創建的。
我所做的改變給我帶來麻煩,是爲了將多個D3圖形插入靜態HTML中定義的佈局。
當我得到D3將元素添加到在HTML中已經定義的SVG標記實驗: 結果接近,但並不總是足夠接近。
檢查創建的DOM元素,區別很明顯。
可以正常工作的代碼的代碼包括:
var svgGraphic = d3.select("body").append("svg")
.attr("width", totalWidth)
.attr("height", totalHeight)
.append("g").attr("transform", "translate(80,0)");
這(加上這裏沒有顯示幾行)導致DOM元素的層次結構類似於以下內容:
<svg width="600" height="200">
<g transform="translate(80,0)">
<path class="link" d="M0,100C95,100 95,50 190,50">
<path class="link" d="M0,100C95,100 95,150 190,150">
<g class="node" transform="translate(0,100)">
<g class="node" transform="translate(190,50)">
<g class="node" transform="translate(380,25)">
</g>
</svg>
當代碼更像是:
var svgGraphic = d3.select("#graphic");
svgGraphic.append("g").attr("transform", "translate(80,0)");
路徑和節點元素不嵌套在冷杉T「G」標記:
<svg id="graphic" height="200" width="600">
<g transform="translate(80,0)">
<path class="link" d="M0,100C95,100 95,50 190,50">
<path class="link" d="M0,100C95,100 95,150 190,150">
<g class="node" transform="translate(0,100)">
<g class="node" transform="translate(190,50)">
<g class="node" transform="translate(380,25)">
</svg>
顯然我並沒有試圖關閉摹標籤追加,但它是如何在第一個例子中去呢?
完美,謝謝 – user835745 2013-02-18 19:51:08