javascript - 在 cytoscape.js 中按度过滤节点
问题描述
我有一个 cytoscape.js 图,我想按度数过滤节点。例如,如果 node1 仅连接到 node2 和 node3 ,当我从过滤器中选择阈值 3 时,将删除所有少于 3 条边的节点。现在我有这个问题:
1)如何按度数过滤?我知道var collection = cy.elements("node[weight > 2]");
选择一个集合cy.remove(collection);
并将删除这些节点,但是如何按连接边数删除?
2)删除一些节点后,需要重新运行布局以获得更好的表示。我找到了一个解决方案,但它需要的时间大致与删除节点之前一样大。我测试了这段代码:
添加节点的代码:
for (var i = 0; i < keys.length; i++) {
try {
cy.add({
data: {
id: keys[i],
weight: i
}
}
);
}
布局代码:
var layout;
cy.ready(function () {
layout = cy.layout({
name: 'cose-bilkent',
animate: false,
padding: 100,
nodeRepulsion: 20000,
idealEdgeLength: 700,
edgeElasticity: 10,
numIter: 2500,
initialEnergyOnIncremental: 0.01,
ready: function () {
}, // on layoutready
stop: function () {
cy.endBatch();
var b64key = 'base64,';
var b64 = cy.png().substring(cy.png().indexOf(b64key) + b64key.length);
var imgBlob = b64toBlob(b64, 'image/png');
saveAs(imgBlob, 'graph.png');
alert(new Date().getTime() - n);
n = new Date().getTime();
}
});
layout.run();
});
在按钮上单击我运行这个:
var collection = cy.elements("node[weight > 2]");
cy.remove( collection );
layout.run();
但是用 3 个节点加载这个图需要 37 秒!!!
解决方案
推荐阅读
- apache-nifi - 如果选择“执行:主节点”,处理器在 Apache NiFi 中不起作用
- javascript - Javascript 使用索引对对象进行排序
- html - BehavorSubject 的订阅者没有发现 chanfes
- python - 在 Python 中使用预主密钥计算 TLS PRF 主密钥
- java - 需要从从 influx db 获取的数据中分离或仅提取值
- c# - 在不使用 GCHandle.Alloc 的情况下将固定长度的缓冲区作为参数传递给函数
- java - 需要帮助将阴影效果应用于 java 中的 pdf 框组件
- r - R - run function to compute a new column form an existing one across each table in a list of tables
- angularjs - angular.js:14199 错误:[$compile:tpload] 无法加载模板:(HTTP 状态:404 未找到)
- django - django中的外键