javascript - D3 Hive 图突出显示节点及其链接

标签 javascript d3.js

我一直在玩 here 的 mbostock 的 D3 hive 图,我想将其升级为具有与 this example 类似的功能。也就是说,当我将鼠标悬停在一个节点上时,它的所有链接都应该突出显示,以及显示这些链接来自/去往何处的文本。

我可以毫无问题地突出显示各个节点和链接

svg.selectAll(".link")
    .data(lLinks)
.enter().append("path")
    .on("mouseover", function() {
        d3.select(this)
            .transition()
            .duration(150)
            .style("stroke-width", 3)
    })

但我无法弄清楚如何突出显示属于特定节点的所有链接。

我当前的数据结构实际上与 mbostock's 相同,我认为这不适合我想做的事情。

我应该如何升级此代码以突出显示所有链接并显示其源/目的地?

最佳答案

这是一个工作 fiddle :http://jsfiddle.net/boatrokr/rk2s5/

下面是节点选择的代码。正如您所看到的,我所做的就是选择链接,如果链接源或目标与所选节点匹配,则链接的描边宽度将设置为 5。我不确定这是否是最好的方法,但它有效。 - 编辑:我忘记删除其中的 console.log - 开发需要它:)

svg.selectAll(".node")
    .data(nodes)
  .enter().append("circle")
    .attr("class", "node")
    .attr("transform", function(d) { return "rotate(" + degrees(angle(d.x)) + ")"; })
    .attr("cx", function(d) { return radius(d.y); })
    .attr("r", 5)
    .style("fill", function(d) { return color(d.x); })
    .on("mouseover", function(d) {
        d3.select(this)
            .transition()
            .duration(150)
            .style("stroke-width", 3)
        d3.selectAll(".link")
            .data(links)
            .style("stroke-width", function (dl) {
                if(dl.source == d){
                    console.log(dl);
                    return 5;
                }else if(dl.target == d){
                    return 5;
                }
        });
    })
    .on("mouseout", function(){
        d3.select(this)
            .style("stroke-width", 1.5)
        d3.selectAll(".link")
            .style("stroke-width", 1.5)
    });

关于javascript - D3 Hive 图突出显示节点及其链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24488926/

相关文章:

javascript - ES6 类 'this' 用于非类方法

javascript - jQueryUI 可排序刷新失败

javascript - 将对 $.fadeIn() 的调用重定向到 $.show()

javascript - D3.js 条形图根据数据的权重或值生成条形颜色

javascript - 将 FontAwesome 图标添加到 D3 图形

javascript - D3.js 条形图 - 轴和标签不起作用/转换

javascript - iframe 混合内容警告 无混合内容

javascript - 停止 Angular 2 中旋转数的解决方案

javascript - d3.js 如何动态添加节点到树

javascript - 如果满足条件,则在另一个转换期间添加并发转换