vis-network中文文档 - physics(物理引擎,物理模拟)

1,413 阅读7分钟

原文

处理物理模拟,移动节点和边以清晰地显示它们。

完整配置项预览

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);

配置项详情

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