如何计算图形的可视数据

How to compute the visual data of a graph?

本文关键字:图形 可视 数据 计算 何计算      更新时间:2023-10-16

我有一个数据库,其中包含许多假设的人的信息。此数据旨在创建将相关人员连接在一起的图形。此图以适当的 c++ 数据结构表示家谱树。目前为止,一切都好。我有我的数据结构保存有关家庭的信息,每个人都是一个节点,所有这些都在树中适当地连接。

现在,问题来了,我迷失在如何为这个家庭图生成视觉数据中。对于任何给定的家庭,我需要生成一个典型的图形,就像您在传统家谱树中看到的那样。我打算使用 OpenGL 渲染数据并设置所有内容以执行此操作。我唯一的问题是如何为每个人的矩形生成正确的位置和大小,所以最终没有重叠,每一代人都坐在同一个垂直位置。然后,我必须添加连接可视化数据中每个节点的传统线条,但这应该不是一个大问题。

是否有任何轻量级库准备执行此功能,或者有人可以帮助我实现算法来解决此问题?谢谢

我推荐AT&T GraphVis库。 Doxygen使用这个库来绘制它的继承图,并调用树。

您也可以搜索"c ++树绘制"。

说明问题的另一种方法是:如何在分层有向图中确定节点布局,以便没有重叠并且同一层次结构中的节点被放置在同一级别?(这里的节点对应于族成员,生成指定层次结构)。

虽然GraphVis

可以提供布局解决方案,但比GraphVis中使用的算法更新的方法是Dwyer等人2005年描述的Dig-CoLa(通过约束能量最小化的定向图形布局)方法。Dig-Cola的优点是,它还可以优雅地处理某些极端情况(例如周期),并避免在这种情况下引入不是由原始数据引起的层次结构。

该方法的基本思想是在层次信息诱导的约束下,通过最小化节点位置的应力(或能量)函数,将布局问题表述并求解为约束优化问题。

Dig-Cola原始论文了解更多信息:

德怀尔、蒂姆和耶胡达·科伦。 "Dig-CoLa:通过约束能量最小化进行定向图布局。" IEEE信息可视化研讨会,2005年。INFOVIS 2005.IEEE,2005 年。(全文目前可在此处获得)

作者还在此处提供了此方法(以及后续扩展)的一些示例和代码。