对于具有以下要求的网络图,可以使用哪些开源 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 那样积极开发。哪一个的可视化效果更好?关于哪一种适合以及如何克服缺点有什么建议吗?
还有其他我可以使用的框架吗?