处理物理模拟,移动节点和边以清晰地显示它们。
完整配置项预览
var options = {
physics:{
enabled: true,
barnesHut: {
theta: 0.5,
gravitationalConstant: -2000,
centralGravity: 0.3,
springLength: 95,
springConstant: 0.04,
damping: 0.09,
avoidOverlap: 0
},
forceAtlas2Based: {
theta: 0.5,
gravitationalConstant: -50,
centralGravity: 0.01,
springConstant: 0.08,
springLength: 100,
damping: 0.4,
avoidOverlap: 0
},
repulsion: {
centralGravity: 0.2,
springLength: 200,
springConstant: 0.05,
nodeDistance: 100,
damping: 0.09
},
hierarchicalRepulsion: {
centralGravity: 0.0,
springLength: 100,
springConstant: 0.01,
nodeDistance: 120,
damping: 0.09,
avoidOverlap: 0
},
maxVelocity: 50,
minVelocity: 0.1,
solver: 'barnesHut',
stabilization: {
enabled: true,
iterations: 1000,
updateInterval: 100,
onlyDynamicEdges: false,
fit: true
},
timestep: 0.5,
adaptiveTimestep: true,
wind: { x: 0, y: 0 }
}
}
network.setOptions(options);
配置项详情
名称 | 类型 | 默认 | 说明 |
---|---|---|---|
enabled | Boolean | true | 打开或关闭物理模拟。此属性是可选的。如果undefined,但定义了下面的任何选项,则此配置项将设置为true. |
barnesHut | Object | Object | Barneshut 是一个基于四叉树的重力模型。这是非层次布局的中最快、默认和推荐的物理模拟引擎(算法)。 |
barnesHut. theta | Number | 0.5 | 此参数确定了合并的远程力和各个短程力之间的边界。 较高的值会更快,但是会产生更多的错误,较低的值会很慢,但是会减少错误。 |
barnesHut. gravitationalConstant | Number | -2000 | 重力吸引。我们喜欢斥力。所以这个值是负数。如果你想要更强的排斥力,降低这个值(-10000至-50000)。 |
barnesHut. centralGravity | Number | 0.3 | 中心引力的值,该引力将整个网络拉回到中心。 |
barnesHut. springLength | Number | 95 | 模拟弹簧的边缘,这里的弹簧长度是弹簧的剩余长度。 |
barnesHut. springConstant | Number | 0.04 | 弹簧的“硬度”。更高的值意味着更强的弹性。 |
barnesHut. damping | Number | 0.09 | 值范围: [0 .. 1]。阻尼因子是前一次物理模拟迭代中有多少速率传递到下一次迭代(弹簧的抖动)。 |
barnesHut. avoidOverlap | Number | 0 | 值范围:[0 .. 1]。当大于0时,将考虑节点的大小。 对于重力模型,距离将根据节点围成的圆的半径来计算。 值为1时是最大程度的避免重叠。 |
forceAtlas2Based | Object | Object | Force Atlas 2由Jacomi等人于2014开发,用于Gephi。基于forceAtlas2的物理引擎利用了它们提供的一些方程,并结合了vis中的barneshut实现。主要的区别是它是中心重力模型,与距离无关,排斥力是线性的而不是平方(二次方,下同)的。 最后,所有节点质量都有一个基于连接边数量加一的乘数(倍数)。 |
forceAtlas2Based. theta | Number | 0.5 | 此参数确定了合并的远程力和各个短程力之间的边界。 较高的值会更快,但是会产生更多的错误,较低的值会很慢,但是会减少错误。 |
forceAtlas2Based. gravitationalConstant | Number | -50 | 这与Barneshut.gravitationalConstant类似,只不过斥力的衰减是线性的,而不是平方的。连通性也被视为影响质量的一个因素。如果你想要更强的排斥力,降低这个值(-1000至-2000)。 |
forceAtlas2Based. centralGravity | Number | 0.01 | 中心引力的值,该引力将整个网络拉回到中心。与距离无关 |
forceAtlas2Based. springLength | Number | 100 | 模拟弹簧的边缘,这里的弹簧长度是弹簧的剩余长度。 |
forceAtlas2Based. springConstant | Number | 0.08 | 弹簧的“硬度”。更高的值意味着更强的弹性。 |
forceAtlas2Based. damping | Number | 0.4 | 值范围: [0 .. 1]。阻尼因子是前一次物理模拟迭代中有多少速率传递到下一次迭代(弹簧的抖动)。 |
forceAtlas2Based. avoidOverlap | Number | 0 | 值范围:[0 .. 1]。当大于0时,将考虑节点的大小。 对于重力模型,距离将根据节点围成的圆的半径来计算。 值为1时是最大程度的避免重叠。 |
repulsion | Object | Object | 排斥模型假定节点周围有一个简化的排斥场。力从1(0.5 * nodedistance及更小)线性减小到0(2 * nodedistance). |
repulsion. nodeDistance | Number | 100 | 这是排斥力的影响范围。 |
repulsion. centralGravity | Number | 0.2 | 中心引力的值,该引力将整个网络拉回到中心。 |
repulsion. springLength | Number | 200 | 模拟弹簧的边缘,这里的弹簧长度是弹簧的剩余长度。 |
repulsion. springConstant | Number | 0.05 | 弹簧的“硬度”。更高的值意味着更强的弹性。 |
repulsion. damping | Number | 0.09 | 值范围: [0 .. 1]。阻尼因子是前一次物理模拟迭代中有多少速率传递到下一次迭代(弹簧的抖动)。 |
hierarchicalRepulsion | Object | Object | 该模型是基于排斥力物理模拟器的,但考虑了层级和力的标准化。 |
hierarchicalRepulsion. nodeDistance | Number | 120 | 这是排斥力的影响范围。 |
hierarchicalRepulsion. centralGravity | Number | 0.0' | 中心引力的值,该引力将整个网络拉回到中心。 |
hierarchicalRepulsion. springLength | Number | 100 | 模拟弹簧的边缘,这里的弹簧长度是弹簧的剩余长度。 |
hierarchicalRepulsion. springConstant | Number | 0.01 | 弹簧的“硬度”。更高的值意味着更强的弹性。 |
hierarchicalRepulsion. damping | Number | 0.09 | 值范围: [0 .. 1]。阻尼因子是前一次物理模拟迭代中有多少速率传递到下一次迭代(弹簧的抖动)。 |
maxVelocity | Number | 50 | 物理引擎模块限制节点的最大速度,以增加稳定时间。这是最大值。 |
minVelocity | Number | 0.1 | 一旦达到所有节点的最小速度,我们假设关系图已经稳定,模拟停止 |
solver | String | 'barnesHut' | 物理模拟器。可能的选项: 'barnesHut', 'repulsion', 'hierarchicalRepulsion', 'forceAtlas2Based' 。当为层级布局时,无论此配置项的值是什么,都会自动设置为 hierarchicalRepulsion 。 |
stabilization | Object or Boolean | Object | 如果为true,则使用默认设置在加载时稳定关系图。如果为false,则禁用稳定。可以使用stabilization 对象自定义。 |
stabilization. enabled | Boolean | true | 是否稳定。这是一个可选属性。如果undefined,但却定义了此对象的任何属性时,它将自动设置为true。 |
stabilization. iterations | Number | 1000 | 物理引擎模块尝试在加载时稳定网络,直到此处定义的最大迭代次数为止。如果网络稳定的次数较少,则在最大数量之前完成。 |
stabilization. updateInterval | Number | 50 | 更新间隔,当稳定时,DOM 可以冻结。 例如,你可以把稳定器分割成小块来显示进度条。 间隔决定了在多少次迭代之后,stabilizationProgress 事件被触发。 |
stabilization. onlyDynamicEdges | Boolean | false | 如果已经预先定义了所有节点的位置,并且只想稳定动态平滑边,请将其设置为“真”。它冻结除不可见动态平滑曲线支持节点之外的所有节点。如果希望可见节点移动并稳定,请不要使用此选项。 |
stabilization. fit | Boolean | true | 稳定完成后是否希望视图缩放以适合所有节点。 |
timestep | Number | 0.5 | 时间步长,物理模拟是离散的。 这意味着我们应及时进行一步:计算出力,移动节点,然后再进行下一步。 如果你增加这个数字,'步'会变大,关系图会变得不稳定。 如果您在网络中看到大量的抖动,可以稍微降低这个值。 |
adaptiveTimestep | Boolean | true | 如果启用此功能,则时间步将智能调整(仅在启用稳定功能的稳定阶段!)大大减少稳定时间。以上配置的时间步长被视为最小时间步长。This can be further improved by using the improvedLayout algorithm. |
wind | Object | object | 在给定方向上推动所有非固定节点的力,要求所有节点都已连接到“固定”的节点,否则未连接的节点将无限移动。 |
wind. x | Number | 0 | 将非固定节点推向右边(正值)或左边(负值)的力。 |
wind. y | Number | 0 | 将非固定节点推向下(正值)或向上(负值)的力 |