问题标签 [graph-layout]

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 投票
1 回答
8066 浏览

javascript - 避免 D3 强制布局中节点和边之间的碰撞

在这个例子中:http ://bl.ocks.org/mbostock/1747543 :

在此处输入图像描述

...Mike 向我们展示了如何避免节点之间的冲突,以便没有两个节点相互重叠。

我想知道是否有可能避免节点和边之间的冲突,以便没有节点“剪辑”或重叠边,除非它被该边连接。

以下使用 D3 force-direct 的示例显示节点L与连接I和的边重叠A,类似地,节点与连接和M的边重叠。我们如何预防此类情况?LD

在此处输入图像描述

0 投票
0 回答
614 浏览

c++ - Boost Graph layout algorithmes (Fruchterman-Reingold)

I have a big problem with using boost layouts. I'm using directed graph and Fruchterman-Reingold layout algorithm. The topology I use is rectangle topology. I have to organize around 200 elements on my scene (I'm using QT scene and items to do it). Boost library is used only to calculate position of elements. My items are rectangles with different size, but we can say it's constant to simplify. Everything works pretty well, except that some of my items sometimes lay on each other. I tried to change, both, attraction and repulsive force but it's still doesn't work at all.

My question is there any way to push away elements from each other. I found something called jitter points in Fruchterman-Reingold algorithm, but changing it didn't help me. Maybe there is way to use rectangle size instead of point (topology<>::point_type) but i can't find it?

Thanks for every idea and help.

0 投票
2 回答
1419 浏览

algorithm - 最小化顶点距离的算法 - Dwarf Fortress

我玩矮人要塞游戏。对我来说主要的挑战是有效地设计堡垒的布局。这意味着,每个行业的流动都应该尽可能密集,以尽量减少旅行距离。

食品工业就是一个例子食品工业。每个灰色椭圆代表一个建筑物。每个白色矩形代表建筑物的产品。

我的目标是找到一种算法,它将建筑物分布在 2D 网格上,使得这些建筑物之间的距离在它们如何连接的意义上是最小的。这意味着fisheryandloom可以相距很远,但loomandfarmer's应该尽可能近。

目前我已经考虑使用一些现成的软件来模拟布局,但是一些算法提示就可以了。

目前我正在考虑一些力导向算法,但我不确定离散网格的要求。

问题的形式化:是否有在离散坐标中工作的 Force Draw Graph 算法?

更新:我在 AS3 中找到了Force draw 算法的实现(网络也包含 JS 版本)。我将尝试将其转换为离散版本。但我怀疑它会起作用......

UPDATE2:在评论中要求进行一些进一步的限制。它们在这里:每栋建筑都占据虚拟网格上的单个单元格。建筑物可以在相邻的单元格上。建筑物不能堆叠/重叠。(PS:在游戏中,每个建筑物都有定义的大小,通常是 3x3,但我想让这个问题更笼统,以允许更多的方法)。

0 投票
0 回答
744 浏览

graphviz - 如何在graphviz中布局子节点

这是我的点代码:我有 3 级节点。目前,在第 3 级(底部),我有一行子节点(橙色),但底部太长。我想要两行子节点。

请建议我如何获得两行子节点。

0 投票
2 回答
1553 浏览

d3.js - 可以为强制导向布局指定自定义强制函数吗?

我想为力导向的图形布局尝试另一种家庭力函数。

对于每个节点n_i,我可以定义一个“力函数” f_i,这样

  • f_i ( n_i )为零;和
  • f_i ( n_j ), 其中n_i != n_j, 是节点上的力n_i是由于某个其他节点n_j

节点上的净力n_i应该是力的矢量和f_i ( n_j ),其中n_j范围在所有其他节点上1

有没有办法告诉 d3.js在布局算法中使用这些自定义强制函数?

[d3.js 的 force-directed layout 的文档描述了可以调整其内置 force 函数的各种方法,但我还没有找到一种方法来完全指定一个完全不同的 force 函数,即一个 force 函数无法通过调整内置力函数的参数来实现。]


1 IOW,n_i除了从其力函数计算的那些之外,没有其他/额外的力应该作用在节点上f_i

0 投票
0 回答
107 浏览

javascript - D3 布局和家谱

我正在尝试使用 D3 的布局显示复杂的家谱。我想结束的是这样的:

也就是说,树中的每一层都表现得像一棵普通的树,而其他每一层的布局都不同,每个配偶都在同一层上。

有没有办法用 D3 布局做到这一点?还是我必须编写自己的布局代码?

0 投票
1 回答
1370 浏览

php - 泳道图的自动布局

我正在寻找可以帮助我以泳道格式布局流程图的算法/库。

例子:

制作和销售鞋子的过程可能如下所示(非常简化):

  • 皮革公司提供皮革
  • 鞋匠用皮革制作鞋子
  • 鞋零售商卖鞋

在这种情况下,我希望以泳道格式显示,即每个角色(皮革公司、鞋匠、鞋零售商)都有一个泳道。在每条泳道上都会显示相应的流程步骤。这与 UML 活动图非常相似。

有没有图书馆可以做到这一点?我看过 d3.js,但我不确定自动布局是否是他们能够做到的。

或者,如果没有任何用于此特定目的的库,是否有最先进的算法(可能有,但我还没有找到)我可以在这种情况下使用?

0 投票
1 回答
1438 浏览

java - 如何在 JGraphX 中自动调用有机布局

我正在使用 JGraphX 库并尝试使用mxFastOrganicLayout执行自动布局:

我想了解如何应用快速有机布局,文档将其定义为mxFastOrganicLayout. 问题是我不能把它变成这样的组件:

asmxGraphComponent不接受mxFastOrganicLayout作为构造函数,而是mxFastOrganicLayout接受mxGraph,这似乎是正确的一步?我将不胜感激任何帮助,问候。

0 投票
0 回答
539 浏览

gephi - 加权度数作为 Gephi 中吸引/排斥的主要参数?

我正在尝试创建一个图表,将两家公司的 (Company xCompany y) 总收入可视化到丹麦市政当局 (kommune) 的列表中。我创建了一个边表,其权重列中包含收入:

我已经计算了 Gephi 中所有节点的加权度,这使我可以将公司节点的大小和颜色由它们的加权 Out-Degree(它们对所有市政当局的总收入)确定,同样的大小和颜色市级节点由其加权 In-Degree(它们对两家公司的总支出)确定。

这一切都很好,但我也希望能够让加权度成为决定音符相互吸引/排斥的主要参数。即,我希望公司节点更靠近他们拥有最大收入的市政当局。有没有办法做到这一点?

0 投票
0 回答
41 浏览

alloy - 合金中的“影响力布局”

为 Alloy Visualizer 定义主题时,可以选择与“影响布局”相关的选项。通常,当p->q是关系中的边缘时r,布局p位于上方qr边缘指向下方。我希望关闭“影响布局”r将允许pq在图中占据相同的级别,以便r-edge 可以水平指向。但这永远不会发生。事实上,我从未观察到“影响布局”复选标记有任何效果。它有什么作用?