伙计们-
我一直在尝试向基于 Mike Bostock 的“Mobile Patent Suits”的可视化添加工具提示
http://bl.ocks.org/mbostock/1153292
我扩展了对象:
{来源:“诺基亚”,目标:“高通”,类型:“套装”}
{来源:“诺基亚”,目标:“高通”,类型:“西装”,工具提示:“我的评论”}
在脚本中添加了https://gist.github.com/milroc/2975255 d3 helper tooltip JS
创建了一个工具提示对象:
var tooltip = d3.select("body")
.append("div")
.style("position", "absolute")
.style("z-index", "70")
.style("visibility", "hidden");
并称之为:
var circle = svg.append("svg:g").selectAll("circle")
.data(force.nodes())
.enter().append("svg:circle")
.call(d3.helper.tooltip(function(d,i){return d.name;}))
.attr("r", 6)
.call(force.drag);
效果很好,但是如果我将其更改为:
.call(d3.helper.tooltip(function(d,i){return d.tooltip;}))
我得到“未定义”。我之前设法将属性添加到 d3 对象,并将它们称为工具提示,并带有树形图。我不确定我需要在这里做些什么不同的事情。
谢谢,
拉尔夫
编辑:
(首先感谢拉斯!)
尝试添加第二组工具提示,但它似乎是对象“链接”而不是“节点”的结构,这使得滚动一个圆圈是否会产生“源”或“目标”的“nameLabel”工具提示'
扩展对象:
{source: "First", target: "Second", type: "dependency", tooltip: "tip for rollover of path", nameLabel: "tip for rollover of circle"}
工作路径提示:
var path = svg.append("svg:g").selectAll("path")
.data(force.links())
.enter().append("svg:path")
.attr("class", function(d) { return "link " + d.type; })
.attr("marker-end", function(d) { return "url(#" + d.type + ")"; })
.call(d3.helper.tooltip(function(d,i){return d.tooltip;}));
狡猾的圆圈工具提示:
var circle = svg.append("svg:g").selectAll("circle")
.data(force.nodes())
.enter().append("svg:circle")
.call(d3.helper.tooltip(function(d,i){return d.nameLabel;}))
.attr("r", 12)
.call(force.drag);
现在,工具提示确实可以识别圆圈,因为这样可以:
.call(d3.helper.tooltip(function(d,i){return d.name;}))
所以我构建了一个我认为可以将名称传递给的函数:
function whatTip(theName) {
var fullArray = new Array;
var fullArray = (("FIRST","first tooltip"),("SECOND","second tooltip"),("THIRD","THIRD tooltip"),("FIFTH","FIFTH tooltip"),("SIXTH","sixth tooltip"),("FOURTH","FOURTH tooltip") );
for(var i=0;i<fullArray.length;i++){
if (fullArray[i][0] == theName) {
return fullArray[i][1];
}}}