我有一个 VisJS 图表,我希望它在我向其中添加内容后立即“适合”。我有大约 200 个节点和 2000 个边。
我已经定义了这些选项,请注意我在稳定选项中说了“fit:true”。
但是,如果我的稳定迭代次数少于 100,则图表根本不适合。
我想保持稳定的数量非常低,以便我的图表加载很快 - 但我想保持它适合。
直到我多次调用拟合函数后,我才能拟合图表,并且我假设应该有一种非常简单的方法来做到这一点。有人可以告诉我吗?
var options = {
nodes: {
shape: 'dot',
scaling: {
label: {
min: 20,
max: 40
},
}
},
edges: {
smooth: {
enabled: true,
type: "dynamic",
// roundness: 0.5
},},
interaction: {
multiselect: false,
navigationButtons: true,
selectable: true,
selectConnectedEdges: true,
tooltipDelay: 100,
zoomView: true
},
physics: {
stabilization: {
enabled: true,
iterations: 180, // maximum number of iteration to stabilize
updateInterval: 10,
onlyDynamicEdges: false,
fit: true
},
}
};
最佳答案
我是vis网络模块的开发者,看来你发现了一个bug:)。
稳定迭代完成后网络应该适合。稳定过程是异步的,因此您应该监听 stableIterationsDone 事件并调用其中的 fit 函数作为快速修复。
你提到你想要保持网络拟合,如果你的意思是你想要在每次渲染迭代中保持拟合,我想最好的方法是在 initRedraw 事件中调用 fit 函数。不过这可能有点贵。
我们尝试在 GitHub 页面上收集所有这些问题、错误报告和功能请求。如果您遇到其他任何问题或有疑问,请在那里提问。
http://www.github.com/almende/vis
干杯
编辑以回答您的问题: 事实证明,在 v4,3 中存在一个错误,该错误不会清除动态静态边的支撑节点,导致拟合在您的情况下没有多大作用。这将在下一个版本中修复。
至于导航按钮的点击事件,你需要自己绑定(bind)它们。基本思想:容器上的document.getElementById。然后获取子级并迭代它们。这样您就可以获得作为按钮的 Dom 元素。 addEventListener 向它们添加监听器并使用它来触发单击。
关于vis.js - VisJS 稳定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30824924/