我正在关注代码this location:
我的json文件看起来像这样
[
{"name":"flare.analytics.A","size":3938,"imports":["flare.analytics.B,flare.analytics.C"]},
{"name":"flare.analytics.B","size":3812,"imports":["flare.analytics.C,flare.analytics.D"]},
{"name":"flare.analytics.C","size":3812,"imports":["flare.analytics.D,flare.analytics.E"]},
{"name":"flare.analytics.D","size":743, "imports":["flare.analytics.E,flare.analytics.F"]},
{"name":"flare.analytics.E","size":3534,"imports":["flare.analytics.F,flare.analytics.G"]},
{"name":"flare.analytics.F","size":5731,"imports":["flare.analytics.G,flare.analytics.H"]},
{"name":"flare.analytics.G","size":7840,"imports":["flare.analytics.H,flare.analytics.I"]},
{"name":"flare.analytics.H","size":5914,"imports":["flare.analytics.I,flare.analytics.A"]},
{"name":"flare.analytics.I","size":3416,"imports":["flare.analytics.B,flare.analytics.A"]}
]
我在本教程后面的代码中添加了一个工具提示 http://bl.ocks.org/Caged/6476579
我添加了
.d3-tip in Style section
然后我添加了功能
var tip = d3.tip()
.attr('class', 'd3-tip')
.offset([-10, 0])
.html(function(d) {
return "<strong>Frequency:</strong> <span style='color:red'>" + d.frequency + "</span>";
})
svg.call(tip);
现在在上面的html函数而不是d.frequency中我添加了 d3.select(&#34; text&#34;)。text()所以它变成了
return "<strong>Frequency:</strong> <span style='color:red'>" + d3.select("text").text() + "</span>";
在我的鼠标功能中,我添加了
node
.classed("mouseover", tip.show);
在mouseouted我添加了
node
.classed("mouseover", tip.hide);
问题是,它始终从我的树中选择第一个元素并显示为工具提示
我在Show d3 node text only on hover找到了答案。
但我不确定如何将其整合到我的代码中
更新
node = node
.data(nodes.filter(function(n) { return !n.children; }))
.enter().append("text")
.attr("class", "node")
.attr("dx", function(d) { return d.x < 180 ? 8 : -8; })
.attr("dy", ".31em")
.attr("transform", function(d) { return "rotate(" + (d.x - 90) + ")translate(" + d.y + ")" + (d.x < 180 ? "" : "rotate(180)"); })
.style("text-anchor", function(d) { return d.x < 180 ? "start" : "end"; })
.text(function(d) { return d.key; })
.on("mouseover", mouseovered)
.on("mouseout", mouseouted);
});
var tip = d3.tip()
.attr('class', 'd3-tip')
.offset([-10, 0])
.html(function(d) {
return "<span style='color:red'>" + d3.select("text").text()+ "</span>";
})
答案 0 :(得分:2)
您可以在鼠标悬停功能中设置提示的html属性(而不是您定义&#39;提示&#39;):
function mouseovered(d) {
tip.html("<strong>Frequency:</strong> <span style='color:red'>" + d.key + "</span>"
);
看到这个小提琴:http://jsfiddle.net/henbox/XqEMf/3/
否则,在进行鼠标悬停之前,您需要定义工具提示的值
请注意,您还希望将提示定义更改为:
var tip = d3.tip()
.attr('class', 'd3-tip')
.offset([-10, 0]);