Javascript 按权重过滤节点并更改属性

Javascript 按权重过滤节点并更改属性,javascript,d3.js,Javascript,D3.js,使用强制导向布局,从数据中添加圆后,我尝试执行以下操作 force .nodes() .filter(function(d){ if(d.weight==0){ return d }}) .attr('class', 'someclass') 过滤器返回正确的节点选择,但是当我添加.attr('class','someclass')时,我得到以下错误: TypeError:force.nodes(…).filter

使用强制导向布局,从数据中添加圆后,我尝试执行以下操作

force
    .nodes()
    .filter(function(d){
        if(d.weight==0){
            return d
        }})
    .attr('class', 'someclass')
过滤器返回正确的节点选择,但是当我添加
.attr('class','someclass')
时,我得到以下错误:

TypeError:force.nodes(…).filter(…).attr不是函数

如何使用节点的“力”属性基于节点的过滤器选择附加属性


感谢您阅读我的问题

您应该使用d3节点选择将属性设置为过滤后的元素集

 node.filter(function(d){
        if(d.weight==0){
            return this
        }
    })
    .attr('class', 'someclass'); //Where node is d3 selection of nodes
请参考下面的小提琴。我已将
someClass
添加到自定义样式的过滤节点集(这里是笔划颜色)

var-width=960,
高度=500;
var color=d3.scale.category20();
var-force=d3.layout.force()
。收费(-120)
.linkDistance(30)
.尺寸([宽度、高度]);
var svg=d3.选择(“正文”).追加(“svg”)
.attr(“宽度”,宽度)
.attr(“高度”,高度);
变量图={
“节点”:[{
“名称”:“1”,
“评级”:90,
“id”:2951
}, {
“名称”:“2”,
“评级”:80,
“id”:654654
}, {
“名称”:“3”,
“评级”:80,
“id”:6546544
}, {
“名称”:“4”,
“评级”:1,
“id”:68987978
}, {
“名称”:“5”,
“评级”:1,
“id”:9878933
}, {
“名称”:“6”,
“评级”:1,
“id”:6161
}, {
“名称”:“7”,
“评级”:1,
“id”:64654
}, {
“名称”:“8”,
“评级”:20,
“id”:354654
}, {
“名称”:“9”,
“评级”:50,
“id”:8494
}, {
“名称”:“10”,
“评级”:1,
“id”:6846874
}, {
“名称”:“11”,
“评级”:1,
“身份证”:5487
}, {
“名称”:“12”,
“评级”:80,
“id”:“parfum_kenzo”
}, {
“名称”:“13”,
“评级”:1,
“id”:65465465
}, {
“名称”:“14”,
“评级”:90,
“id”:“丛林中的kenzo”
}, {
“名称”:“15”,
“评级”:20,
“身份证”:313514
}, {
“名称”:“16”,
“评级”:40,
“id”:36543614
}, {
“姓名”:“17”,
“评级”:100,
“id”:“Yann_YA645”
}, {
“姓名”:“18”,
“评级”:1,
“id”:97413
}, {
“姓名”:“19”,
“评级”:1,
“id”:97414
}, {
“姓名”:“20”,
“评级”:100,
“id”:976431231
}, {
“名称”:“21”,
“评级”:1,
“id”:9416
}, {
“姓名”:“22”,
“评级”:1,
“id”:998949
}, {
“姓名”:“23”,
“评级”:100,
“id”:984941
}, {
“姓名”:“24”,
“评级”:100,
“id”:“99843”
}, {
“姓名”:“25”,
“评级”:1,
“id”:94915
}, {
“姓名”:“26”,
“评级”:1,
“身份证”:913134
}, {
“姓名”:“27”,
“评级”:1,
“id”:9134371
}],
“链接”:[{
“来源”:6,
“目标”:5,
“价值”:6,
“标签”:“发布者”
}, {
“来源”:8,
“目标”:5,
“价值”:6,
“标签”:“发布者”
}, {
“来源”:7,
"目标":一,,
“价值”:4,
“标签”:“containsKeyword”
}, {
“来源”:8,
“目标”:10,
“价值”:3,
“标签”:“containsKeyword”
}, {
“来源”:7,
“目标”:14,
“价值”:4,
“标签”:“发布人”
}, {
“来源”:8,
“目标”:15,
“价值”:6,
“标签”:“发布人”
}, {
“来源”:9,
"目标":一,,
“价值”:6,
“标签”:“描述”
}, {
“来源”:10,
"目标":一,,
“价值”:6,
“标签”:“描述”
}, {
“来源”:16,
"目标":一,,
“价值”:6,
“标签”:“管理网站”
}, {
“来源”:16,
"目标":二,,
“价值”:5,
“标签”:“管理网站”
}, {
“来源”:16,
"目标":三,,
“价值”:6,
“标签”:“管理网站”
}, {
“来源”:16,
“目标”:4,
“价值”:6,
“标签”:“管理网站”
}, {
“来源”:19,
“目标”:18,
“价值”:2,
“标签”:“postedOn”
}, {
“来源”:18,
"目标":一,,
“价值”:6,
“标签”:“childOf”
}, {
“来源”:17,
“目标”:19,
“价值”:8,
“标签”:“描述”
}, {
“来源”:18,
“目标”:11,
“价值”:6,
“标签”:“containsKeyword”
}, {
“来源”:17,
“目标”:13,
“价值”:3,
“标签”:“containsKeyword”
}, {
“来源”:20,
“目标”:13,
“价值”:3,
“标签”:“containsKeyword”
}, {
“来源”:20,
“目标”:21,
“价值”:3,
“标签”:“postedOn”
}, {
“来源”:22,
“目标”:20,
“价值”:3,
“标签”:“postedOn”
}, {
“来源”:23,
“目标”:21,
“价值”:3,
“标签”:“管理网站”
}, {
“来源”:23,
“目标”:24,
“价值”:3,
“标签”:“管理网站”
}, {
“来源”:23,
“目标”:25,
“价值”:3,
“标签”:“管理网站”
}, {
“来源”:23,
“目标”:26,
“价值”:3,
“标签”:“管理网站”
}]
};
力
.nodes(图.nodes)
.links(graph.links)
.start();
var link=svg.selectAll(“.link”)
.数据(图表.链接)
.enter().append(“行”)
.attr(“类”、“链接”)
.样式(“笔划宽度”,功能(d){
返回Math.sqrt(d.value);
});
var node=svg.selectAll(“.node”)
.数据(图.节点)
.enter().append(“圆”)
.attr(“类”、“节点”)
.attr(“r”,5)
.样式(“填充”,功能(d){
返色(d组);
})
.呼叫(强制拖动);
node.append(“标题”)
.文本(功能(d){
返回d.name;
});
/**********************************************************/
节点过滤器(功能(d){
如果(d.额定值>50){
还这个
}
})
.attr('class','someclass');
/**********************************************************/
force.on(“勾号”,函数(){
link.attr(“x1”,函数(d){
返回d.source.x;
})
.attr(“y1”,函数(d){
返回d.source.y;
})
.attr(“x2”,函数(d){
返回d.target.x;
})
.attr(“y2”,功能(d){
返回d.target.y;
});
node.attr(“cx”,函数(d){
返回d.x;
})
.attr(“cy”,函数(d){
返回d.y;
});
});
.node{
冲程:#fff;
笔划宽度:1.5px;
}
.链接{
行程:#999;
中风乳晕