没有查看器的图形布局算法库

问题描述 投票:0回答:1

我正在寻找一个开源图形布局算法库,它可以按以下方式运行: 用户发送节点列表(具有不同大小的节点)和边列表作为参数。然后该函数根据库支持的图算法(应至少支持非二叉树图布局)计算节点和边的位置。最后,它返回节点的位置(坐标)供用户在自己的查看器中处理和渲染。 该算法还应该能够更新已经存在的图(插入/删除)。

我正在使用 WPF 渲染数据并创建图表,这是我迄今为止尝试过的:

  1. 使用MSAGL直接WPF图形创建表单。 但不支持树形图布局
  2. 使用 Graphviz DOT 语言,将图形文件转换为 .plain 并使用项目 text 尝试了解如何将 .plain 文件处理为 WPF 图形。 在项目中找不到太多关于作者如何从 .plain 文件中获取信息的信息
  3. 使用 GraphX、NetworkViewSampleCode、QuikGraph、QuickGraph、NodeGraph 等开源项目来创建图表。 要么不支持树形布局,不支持动态插入/删除,要么不支持不同大小的节点

我本来希望找到一个可以提供此类功能的库,但它似乎有点具体。我应该开始寻找有关如何开发图形布局算法的教程吗?

graph graph-theory graph-layout
1个回答
0
投票

如果您使用 -Tplain 选项,Graphviz 就会执行此操作

$ echo 'digraph { a->b }' | dot -Tplain
graph 1 0.75 1.5
node a 0.375 1.25 0.75 0.5 a solid ellipse black lightgrey
node b 0.375 0.25 0.75 0.5 b solid ellipse black lightgrey
edge a b 4 0.375 0.99579 0.375 0.88865 0.375 0.7599 0.375 0.64045 solid black
stop

输出语句有四种类型。

 graph scale width height
 node name x y width height label style shape color fillcolor
 edge tail head n x₁ y₁ .. xₙ yₙ [label xl yl] style color
 stop

节点 name 值是节点的名称,x 和 y 给出节点的位置。

https://graphviz.org/docs/outputs/plain/

© www.soinside.com 2019 - 2024. All rights reserved.