如何部分自动布局图形流图形



如果Graphstream图中的某些节点有一些固定的坐标,我可以让Graphstream"填补空白"并自动布局那些没有手动指定位置的节点吗?

例如:

Node n1 = graph.addNode("n1");
n1.setAttribute("xy",-0.1,53.35);
Node n2 = graph.addNode("n2");
graph.addEdge("n1n2",n1,n2);
Node n3 = graph.addNode("n3");
n3.setAttribute("xy",-0.4,56.35);
graph.addEdge("n2n3",n2,n3);

鉴于以上情况,n2没有指定位置。是否可以要求GraphStream推断它,而不是因为它不知道它在哪里而不显示它?

如果我使用viewer.disableAutoLayout();,它不会显示未定位的节点;如果我使用CCD_ 2,那么它会忽略我的手动节点位置。

虽然推断的位置不是已知位置的平均值,但有一些设置可以用来(在某种程度上(做到这一点。

改编上述代码:

Node n1 = graph.addNode("n1");
n1.setAttribute("xy",-0.1,53.35);
n1.addAttribute("layout.frozen");
Node n2 = graph.addNode("n2");
graph.addEdge("n1n2",n1,n2);
Node n3 = graph.addNode("n3");
n3.setAttribute("xy",-0.4,56.35);
n3.addAttribute("layout.frozen");
graph.addEdge("n2n3",n2,n3);
SpringBox layout = new SpringBox(false,new Random(0));
viewer.enableAutoLayout(layout);

layout.frozen属性添加到具有已知位置的节点将防止布局管理器移动这些节点。

然而,推断出的位置/边缘长度不一定与已知的位置/长度在同一比例上。可以通过将每个节点和每条边上的layout.weight属性设置为0以上的数字来进行调整。在节点上,这设置了每个节点对相邻节点的排斥程度;在边缘上,它是目标边缘长度的倍数。有关更多详细信息,请参阅文档。

相关内容

  • 没有找到相关文章

最新更新