python力导向图_力导向 (Force-directed) 布局算法绘图(布点)的简单实现

描述

本文简要介绍力导向算法的原理,提供了源码和D3绘制的实验结果图。

Force-Directed Layout algorithms are graph drawing algorithms based only on information contained within the structure of the graph itself rather than relying on contextual information.

力导向布局算法是一类绘图算法,它仅仅基于图的解构本身来绘图,而不依赖于上下文信息。

力导向绘图 (Force-directed graph drawing)可以用于描述关系图的结点之间的关系,把结点分布到画布上合理的位置,比如描述企业之间的关系,社交网络中的人际关系等。

原理

斥力(Repulsive Force)

把每个节点看做一个电荷,电荷与电荷之间存在斥力,也就是库仑力,根据库仑定律( Coulomb's law),电子之间的斥力可以这么计算:

d3c64a39535a

Coulomb's law

假设每个电子的电量都是1,那就有:

F = k/r2.

常数k可以根据画布大小和电子数量计算。

由于需要更新x,y坐标,可以分别计算斥力产生的正向位移。

displacementX = distX / dist * k * k / dist * ejectFactor

*关于计算x, y偏移和常数k的方式,可能并没有特别明确的方式,这里可能并不是最优的方法。

引力(Traction Forc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值