比较用于绘制网络拓扑的开源 java 图形绘制框架(JUNG 和 Prefuse)

2024-03-12

对于具有以下要求的网络图,可以使用哪些开源 Java 图形绘制框架?该图的节点数将少于 1000 个。

1) 有平行边
2) 单个图中的有向边和无向边
3)图像表示的节点
4)用户与节点和边的交互
5)动态添加/删除节点和边
6)节点和边上的多重标记,用户可以关闭/打开不同级别的标记。 (就像分层绘制和关闭/打开图层一样)
7) 不同的布局算法来显示星形、环形、网状拓扑

我评价了JUNG和Prefuse。这是我为我的每个要求找到的。

1) Prefuse 无法显示平行边,而 JUNG 支持。可以操纵 prefuse 代码来显示平行边缘吗?由于这涉及基本数据级别的更改,我相信这比通常的自定义渲染更改更困难。

2)我在 prefuse 和 JUNG 中都没有找到任何对组合图(有向边和无向边)的引用。还有人知道吗?

3) 对于 Prefuse 和 JUNG 来说这似乎很容易

4) 同样,prefuse 和 JUNG 都提供了对用户交互的支持。

5)prefuse和JUNG都支持。重绘图表时每个框架的表现如何?我在另一篇文章中看到 prefuse 对于动态更新表现不佳( https://stackoverflow.com/questions/502763/prefuse-toolkit-dynamically-adding-nodes-and-edgesPrefuse Toolkit:动态添加节点和边 https://stackoverflow.com/questions/502763/prefuse-toolkit-dynamically-adding-nodes-and-edges)

6) 这归结为修改图形并重新绘制它。所以问题就和5)一样了

7)JUNG和prefuse都有多种布局算法。但是当我尝试在 JUNG 和 Prefuse 中使用 FruchtermanReingoldLayout 显示相同的数据集时,我得到了不同的显示。有什么想法吗?不知何故,Prefuse 中的布局算法似乎比 JUNG 中显示更好的布局(我认为渲染也更好),尽管 Prefuse 中的大多数布局算法都基于 JUNG 实现。 Prefuse 布局如 ForceDirectedLayout/FruchtermanReingoldLayout 和 CircleLayout 直接映射到星形、圆形、网状拓扑。

除了这些要求之外,prefuse 对表达式和查询语言有很好的支持,但看起来不像 JUNG 那样积极开发。哪一个的可视化效果更好?关于哪一种适合以及如何克服缺点有什么建议吗?

还有其他我可以使用的框架吗?


我是 JUNG 的创建者和维护者之一,所以在下面的回复中请记住这一点。

不过,首先我应该说 Prefuse 的作者是朋友的朋友(是的,我们见过),他做得很好。我对 Prefuse 没有经验,但我见过用它创建的一些漂亮的可视化效果。

以下是荣格对这些问题的回答。其中几个((1)、(2)、(4)在PluggableRendererDemo:

  1. 支持(您需要正确的数据模型,出于性能原因,并非所有模型都支持平行边)
  2. 支持(同样,您需要正确的数据模型)
  3. 支持(参见ImageShaperDemo)
  4. 支持(大多数演示)
  5. 支持(参见GraphEditorDemo)
  6. 不直接支持,尽管您当然可以动态更改标签并使用 HTML 呈现复杂的标签。
  7. JUNG的布局算法更适合一般网络(树等也有少数例外)。不过,您当然可以构建自己的布局算法,并且许多算法已经这样做了。

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

比较用于绘制网络拓扑的开源 java 图形绘制框架(JUNG 和 Prefuse) 的相关文章

随机推荐