Graphstream图自动布局的操作

来源:爱站网时间:2022-04-09编辑:网友分享
如果想在java编程上进行Graphstream图自动布局的操作,你知道怎么处理会比较方便吗?接下来的时间就让爱站技术频道小编来给大家详细讲解下吧!

问题描述


如果我对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();,它将不会显示未定位的节点;如果我使用viewer.enableAutoLayout();,它将忽略我的手动节点位置。

思路:


尽管可以推断出的位置不是已知位置的平均值,但是有些设置可以用来(排序)。”>

适应上面的代码:

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的数字)来进行调整。在边缘,它是目标边缘长度的乘数。

相信朋友们都看完了Graphstream图自动布局的操作内容吧!如果你对这方面的了解需要进一步的话,可以直接来网站咨询小编,或者来网站寻找相关资料。

上一篇:Intellij返回.class文件的两种解决方案

下一篇:JSplitPane组件的动态变化过程

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载