针对以下网络图的要求,您应该选择哪个开源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: dynamically adding nodes and edges)。
6)这归结为修改图形并重新绘制它。因此,问题与第5)个问题相同。
7) JUNG和Prefuse都有多种布局算法。但是当我尝试使用FruchtermanReingoldLayout在JUNG和Prefuse中显示相同的数据集时,我得到了不同的显示结果。有什么想法?尽管Prefuse中的大多数布局算法都基于JUNG实现,但某种程度上Prefuse中的布局算法似乎比JUNG展现出更好的布局(我认为呈现效果也更好)。Prefuse的布局,如ForceDirectedLayout/FruchtermanReingoldLayout和CircleLayout,直接映射到星形、圆形和网格拓扑。
除此之外,Prefuse对表达式和查询语言有很好的支持,但看起来不像JUNG那样积极开发。哪一个可视化效果更好?有没有关于哪一个更适合以及如何克服缺点的建议?
还有其他可以使用的框架吗?