哪些开源 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 在动态更新方面表现不佳(Prefuse Toolkit:动态添加节点和边)
6)这归结为修改图形并重新绘制它。所以问题变得与5相同)
7) JUNG 和 prefuse 都有多种布局算法。但是当我尝试在 JUNG 和 Prefuse 中使用 FruchtermanReingoldLayout 显示相同的数据集时,我得到了不同的显示。任何想法为什么?尽管 Prefuse 中的大多数布局算法都基于 JUNG 实现,但 Prefuse 中的布局算法似乎显示出比 JUNG 更好的布局(我认为渲染也更好)。Prefuse 布局,例如 ForceDirectedLayout/FruchtermanReingoldLayout 和 CircleLayout 直接映射到星形、圆形、网状拓扑。
除了这些要求之外,prefuse 对表达式和查询语言有很好的支持,但看起来不像 JUNG 那样积极开发。哪一个有更好的可视化?关于哪一个合适以及如何克服缺点的任何建议?
我可以使用任何其他框架吗?