在 D3 中換行
要在 D3 中換行,您可以實現動態新增多個
<code class="javascript">function wrap(text, width) { text.each(function () { var words = d3.select(this) .text() .split(/\s+/); words = words.reverse(); var line = []; var lineNumber = 0; var lineHeight = 1.1; // ems var x = text.attr("x"); var y = text.attr("y"); var dy = 0; // parseFloat(text.attr("dy")); var tspan = text .text(null) .append("tspan") .attr("x", x) .attr("y", y) .attr("dy", dy + "em"); while (word = words.pop()) { line.push(word); tspan.text(line.join(" ")); if (tspan.node().getComputedTextLength() > width) { line.pop(); tspan.text(line.join(" ")); line = [word]; tspan = text .append("tspan") .attr("x", x) .attr("y", y) .attr("dy", ++lineNumber * lineHeight + dy + "em") .text(word); } } }); }</code>
然後,您不必直接設定每個節點的文本,而是必須對其調用包裝函數:
<code class="javascript">// Add entering nodes in the parent’s old position. node.enter() .append("text") .attr("class", "node") .attr("x", function (d) { return d.parent.px; }) .attr("y", function (d) { return d.parent.py; }) .text("Foo is not a long word") .call(wrap, 30); // wrap the text in <= 30 pixels</code>
這將包裝您的基於
以上是如何在 D3 中進行字元限製文字換行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!