我想从YFiles迁移到Jung。说到小图,显示几乎与YFiles相似。但对于大型图表,我没有找到任何布局来满足我的期望。这是一个包含1000个元素的图表,YFiles似乎显示得非常好: YFiles Graph Display
在Jung中,子图之间的距离不一致,如下图所示:
对于JUNG,我使用了一个带有FRLayout的SparseMultigraph,其中包含以下属性:
FRLayout<GraphNode, GraphLink> layout = new FRLayout<>(graph);
layout.setMaxIterations(100);
layout.setAttractionMultiplier(0.2); // default 0.75
layout.setRepulsionMultiplier(0.3); // default 0.75
我玩了很多迭代次数,吸引倍数和排斥倍数,但这是我发现的最佳组合。
是否有更合适的布局/图形来显示这样的图形,以获得与YFiles显示的内容类似的内容?
答案 0 :(得分:0)
您希望从布局中获得非常具体的结果,因此最好的选择是实现自己的布局算法。 JUNG提供的布局旨在相当通用,并且适用于各种各样的图表;他们并不期望能够完全按照您想要的任何特定图表进行操作。
如果你能找到YFiles正在使用的算法,那么你将拥有一个选项,就是简单地重新实现他们的算法。
但是,在这种情况下,由于您的图形看起来是许多具有完全相同大小和拓扑的独立隔离组件的聚合,因此我建议创建一个专门的实现,以确定性地放置图形。您可以使用WeakComponentClusterer
来识别组件,使用一个简单的公式来确定组件的每个元素的相对位置,然后布置每个组件。
StaticLayout
对确定性方法很有用。