我正在使用d3js来显示节点和边的网络。在可视化中,我包含了一个用于搜索节点的HTML表单输入选项。输入可以是多个节点。
我在使用过滤函数过滤多个节点时遇到了困难。我搜索了相当多,但没有发现类似的问题。相关代码如下:
$("#submit-search").submit(function(event) {
// values separated by commas
var ip = $("#search-nodes").val().split(',');
// converts to integers
for(var i=0; i<ip.length; i++) {ip[i] = parseInt(ip[i], 10);}
visualization.selectAll('circle')
.filter(function(d){
return ip.indexOf(d.name) != -1 ? d.name : false;
})
.style("stroke-width", 15)
.style("stroke-opacity", 0.75)
.style("fill", "black");
});由于indexOf函数只返回第一次命中,因此只突出显示了一个节点。我尝试使用jQuery的grep函数,但没有成功。
添加了可视化的图像。因为我在本地使用django框架,所以它不能公开使用。

编辑:包含的jsfiddle http://jsfiddle.net/ZqzbN/错误
节点具有属性:度中心性、组、名称、介数中心性,度边具有属性:源节点、目的节点、组
发布于 2014-02-27 23:38:23
我不熟悉d3js,但我能想到的最简单的解决方案是将过滤器功能分离到可视化范围之外。我推荐这样的东西。它只是一个伪代码:
var new_array;
for each node in ip:
insert node.name into new_array if node.name != -1
end
visualization.do_your_stuff_with(new_array);https://stackoverflow.com/questions/22070430
复制相似问题