我使用jsNetworkx绘制了一个图形,它是Networkx的JavaScript版本。这个端口还不具备Networkx的所有功能。
我的工作:http://jsfiddle.net/mrcactu5/VGpRJ/4/
我希望能够在mouseover
上突出显示节点及其邻居,并将其颜色更改为#FEFEFE
。
答案 0 :(得分:3)
我计划将来更容易向可视化添加事件处理程序,但是现在,您必须自己使用D3实现这些事情。
基本思想如下:根据节点名称为每个SVG节点元素分配唯一的ID。然后,在鼠标悬停(与D3绑定)上,获取节点的所有邻居并使用名称查找相应的SVG元素并更改其样式。
示例:
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);
});