问题标签 [force-based-algorithm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
7000 浏览

c++ - C++ 中的强制导向布局实现

您是否知道用于 GUI 的 C++中强制导向布局的开源实现?最好是 BSD/MIT/Apache 或其他(非 GPL)许可证。

0 投票
2 回答
2152 浏览

flash - Flash关系图

有谁知道任何 Flash fla 的存在并且是免费的,它们的功能类似于http://audiomap.tuneglie.net/(您必须输入搜索词才能看到它的实际效果)。

我所追求的是在中间创建节点的闪光灯,该节点扩展到子节点,然后每个子节点都可以扩展到更多子节点等,同时保持彼此之间的距离以免重叠。我想要它,这样如果您单击一个节点来展开它,它就会跳到一个网站并获得一个 xml 提要,然后可以使用该提要来创建子节点。

谢谢

0 投票
2 回答
1064 浏览

algorithm - 图论 - 基于力的自动布局算法

只是想在开始实施之前检查我的理论。

常数:

  • m=顶点质量(都一样 - 可能将其设置为节点半径)
  • k= 恒定的边缘力。
  • l=“能量最小状态”的边长。

变量:

  • d= 两个顶点之间的距离。
  • cl= 边的当前长度。

理论: 每个顶点对每个其他顶点都有排斥力,即:m / (d^2)。对于每条边,它都表现出一个力,两个顶点都将它们“拖动”到使边达到“能量最小状态”的方向;所以每个顶点:-k * ((l - cl) / 2).

伪代码:

评论:那么这行得通吗?我应该设置m什么k

0 投票
1 回答
543 浏览

javascript - Force Directed 图可视化:是否可以确保某些节点彼此之间的距离比其他节点更近?

我正在做这个项目,我正在分析一个人与他的 Twitter 朋友和追随者的“亲密程度”。接近度是根据主题提及他人或被他人提及的次数来衡量的。

最后,我有这个连接的“权重”指标。我想为同一主题创建一个可视化,其中主题位于中心并被他的朋友/追随者包围。我希望权重较高的朋友/追随者更接近主题,并且随着连接权重的降低,它会越来越远离主题。

我目前正在使用Graph Dracula来生成相同的力有向图。是否有可能确保某些节点总是比其他节点更接近主题,或者我对力导向图可视化的理解都是错误的?

它是一个开源项目,您可以在此处找到,如果您想查看它的实际效果,请在此处尝试。

它绝不是完整的,因此请忽略(或报告)任何错误或您可能发现的任何内容。是的,目前只有 Chrome。

0 投票
1 回答
964 浏览

javascript - arbor js - 保存和加载图表

我正在使用 arbor js 使用其基于力的算法创建图表。

我希望能够在总能量低于某个点后保存节点的 x,y 系统坐标,以便在访问图表时可以将它们重新加载,以避免重新处理所有从零开始的能量。

我这样做有两个问题:

  1. sys.energy().sum总是返回NaN

    • 作为替代方案,我决定setTimeout在给定的时间段过后保存图形节点位置
  2. 虽然我已经能够将节点 x,y 系统坐标保存到 DB,但当我尝试使用保存的 xy 坐标将数据加载到图形中(使用sys.mergesys.addNode)时,图形无法显示,并且出现“内存不足”消息出现在控制台日志中。

这是一个保存节点 x,y 系统坐标的数据示例,这会导致 arbor js 在加载时崩溃:

我找不到节点 x,y 坐标位于输入数据中的图形示例。

0 投票
4 回答
447 浏览

javascript - 使坐标被某些其他坐标吸引/排斥

我正在生成几个像这样的 svg 图像:

这些 svg 是汉字的笔顺图。因此,图像以不同的颜色显示每个笔画,并且在每个笔画的起点处显示一个数字,以可视化它们必须按什么顺序绘制。

我的方法的问题是数字可能重叠或彼此太接近,从而难以阅读。

我想实现一种算法,为每个坐标计算更好的位置。我在想一些东西,它可以让你指定对起点的吸引力和对所有其他数字的所有坐标的排斥。

这个算法是不是已经存在并且有名字?如何在 JavaScript 中完成?

这是一段代码,其中包含当前绘制数字的笔画起始位置的坐标:

减小两位数的文本大小在一定程度上有所帮助,但仍然可能发生重叠,我无法真正进一步减小文本大小,因为它会变得不可读..

如果你想玩弄它,这里有一个小提琴:https ://jsfiddle.net/t2o7p1ea/31/ 相关部分从第 62 行开始,到第 78 行结束。

编辑: 我找到了一个可以正常工作的解决方案。但这并不完美。如果你能想出更好的东西。我很乐意将赏金奖励给你。

0 投票
0 回答
7 浏览

animation - 基于 D3 力的布局可以旋转节点吗?

我正在考虑一种基于力的蛋白质链布局,它工作得很好,因为我将链中的每个氨基酸表示为一个节点。但是,我想将一些修饰的氨基酸和其他附着在氨基酸上的物质显示为分子的刚性 2D 图,链连接到这些分子上。当力将它们拉到位时,这些节点将需要旋转。

据我所见,在 d3 基于力的布局中,节点只是点,它们上没有“杠杆”动作,这会提高对任何旋转的期望。如果我需要模拟旋转的“节点”,我可以想象我在连接点之间绘制刚性链接,无法拉伸的链接,并且分子绘图将与一个链接(可能是几个链接)相关联,并以与我们可以旋转相同的方式旋转这些链接的文本注释。

正确的?这是唯一的方法吗?以这种方式旋转图纸是否非常昂贵?我总是有点担心,如果有一千个节点和几十个这样的分子图,整个动画会减慢太多而无法发挥作用。

我想我可以改变单个链接的物理特性(例如,可拉伸性),对吧?我可以为单个链接设置注释是否旋转,对吗?