首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >D3节点文本显示在工具提示中

D3节点文本显示在工具提示中
EN

Stack Overflow用户
提问于 2014-04-18 07:46:06
回答 1查看 4.8K关注 0票数 3

我在这个位置上遵循代码:

我的json文件看起来像这样

代码语言:javascript
复制
[
{"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之后,我在上面的代码中添加了一个工具提示。

我加了

代码语言:javascript
复制
.d3-tip in Style section

然后我添加了函数

代码语言:javascript
复制
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函数中,我添加了d3.select("text").text(),而不是d.frequency,所以它变成了

代码语言:javascript
复制
return "<strong>Frequency:</strong> <span style='color:red'>" + d3.select("text").text() +     "</span>";

在我的鼠标控制功能中,我添加了

代码语言:javascript
复制
node
.classed("mouseover", tip.show);

我用口吻补充道

代码语言:javascript
复制
node
.classed("mouseover", tip.hide);

问题是,总是从我的树中选择第一个元素,并显示为工具提示

我在仅在悬停时显示d3节点文本找到了一个答案。

但我不确定如何将其集成到代码中。

更新

代码语言:javascript
复制
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>";
  })
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-18 12:28:51

您可以在mouseovered函数中设置tip的html属性(而不是定义‘tip’的位置):

代码语言:javascript
复制
function mouseovered(d) {
   tip.html("<strong>Frequency:</strong> <span style='color:red'>" + d.key + "</span>"
);

看这把小提琴:http://jsfiddle.net/henbox/XqEMf/3/

否则,在执行鼠标覆盖之前,您将定义工具提示的值。

注意,还需要将提示定义更改为:

代码语言:javascript
复制
var tip = d3.tip()
  .attr('class', 'd3-tip')
  .offset([-10, 0]);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23149765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档