我使用的是D3 v4,我想用D3plus将文字换成圆圈。 我尝试了两种方法,但没有任何方法可以帮助我。
第一种方法
我采用了https://bl.ocks.org/davelandry/a39f0c3fc52804ee859a的例子。 这是我的代码的重要部分:
<head>
<script type="text/javascript" src="https://d3js.org/d3.v4.min.js"></script>
<script type="text/javascript" src="https://d3plus.org/js/d3plus.js"></script>
</head>
<body>
<div id="graphContainer" class="graphContainer">
<svg width="960" height="600"></svg>
</div>
<script>
d3.json('licenseSmall.json', function(error, graph) {
if (error) throw error;
var nodeContainer = svg.append("g")
.attr("class", "nodeContainer");
var node = nodeContainer.selectAll(".node")
.data(graph.nodes)
.enter().append("g")
.attr("class", "nodes")
.call(d3.drag()
.on("start", dragstarted)
.on("drag", dragged)
.on("end", dragended));
var circle = node.append("circle")
.attr("r", 20)
.attr("fill", function(d) { return color(d.color); });
node.append("text")
.attr("id", "text")
.attr("dx", -10)
.attr("dy", ".35em")
.attr("test-anchor", "middle")
.text(function(d) { return getText(d) });
// Wrap text in a circle.
d3plus.textwrap()
.container(d3.select("#text"))
.draw();
});
</script>
</body>
使用此代码我得到2个错误:
TypeError:d3.scale未定义
ReferenceError:未定义d3plus
所以看起来d3plus不适用于D3 v4 ...
然后我发现了这篇文章https://groups.google.com/forum/#!topic/d3plus/WN2Ruj3kjPA 并尝试从链接的Github项目d3plus-text中取示示例(抱歉,我没有足够的声誉发布链接)。
所以我改变了我的代码:
旧
<head>
<script type="text/javascript" src="https://d3js.org/d3.v4.min.js"></script>
<script type="text/javascript" src="https://d3plus.org/js/d3plus.js"></script>
</head>
新
<head>
<script type="text/javascript" src="https://d3js.org/d3.v4.min.js"></script>
<script src="https://d3plus.org/js/d3plus-text.v0.9.full.min.js"></script>
</head>
在脚本中我刚刚更换了
// Wrap text in a circle.
d3plus.textwrap()
.container(d3.select("#text"))
.draw();
与
new d3plus.TextBox()
.data(d3.select("#text").data())
.fontSize(16)
.width(200)
.x(function(d, i) { return i * 250; })
.render();
但实际上没有任何反应。该文字看起来与以前一样。
我收到了这个错误:
TypeError:t在d3.v4.min.js:4:27260
中未定义我不知道如何正确采用这个例子。我没有找到关于如何使用d3plus.TextBox()
的任何其他示例我做错了什么?
答案 0 :(得分:1)
使用d3plus
d3plus.textwrap()
.container(d3.select("#your-div"))
.shape('circle')
.width(290)
.height(75)
.resize(true)
.draw();
答案 1 :(得分:0)
我使用d3plus-text.Textbox()