首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jsnetworkx改变节点颜色,访问邻居

jsnetworkx改变节点颜色,访问邻居
EN

Stack Overflow用户
提问于 2013-04-16 22:52:17
回答 1查看 1.1K关注 0票数 1

我用jsNetworkx绘制了一个图形,这是JavaScript版本的Networkx。这个端口还没有完全具备Networkx的所有功能。

我的作品:http://jsfiddle.net/mrcactu5/VGpRJ/4/

我希望能够在mouseover上突出显示一个节点及其邻居,并将它们的颜色更改为#FEFEFE

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-16 23:15:27

我计划在将来更容易地将事件处理程序添加到可视化中,但是现在,您必须使用D3自己来实现这些事情。

基本思想如下:根据节点名称为每个SVG节点元素分配一个唯一的ID。然后,在mouseover (与D3绑定)上,获取节点的所有邻居,并使用名称查找相应的SVG元素并更改它们的样式。

示例:

代码语言:javascript
复制
jsnx.draw(G3, {
    // ...
    node_attr: {
        r: 8,
        title: function(d) { return d.label;},
        id: function(d) {
            return 'node-' + d.node; // assign unique ID
        }
    }
    // ...
}, true);

// helper method to find and style SVG node elements
function highlight_nodes(nodes, on) {
    nodes.forEach(function(n) {
        d3.select('#node-' + n).style('fill', function(d) {
            return on ? '#EEE' : d.data.color;
        });
    });
}

// bind event handlers
d3.selectAll('.node').on('mouseover', function(d) {
    highlight_nodes(d.G.neighbors(d.node).concat(d.node), true);
});

d3.selectAll('.node').on('mouseout', function(d) {
    highlight_nodes(d.G.neighbors(d.node).concat(d.node), false);
});

演示

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16048564

复制
相关文章

相似问题

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