Как частично автоматически разметить графовый поток графа - PullRequest
0 голосов
/ 24 февраля 2020

Если у меня есть фиксированные координаты для некоторых узлов в графе 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();, то он игнорирует мои местоположения узлов вручную.

1 Ответ

1 голос
/ 24 февраля 2020

Существуют некоторые настройки, которые можно использовать для этого (вроде как), хотя предполагаемые местоположения не являются средними значениями известных.

Адаптация приведенного выше кода:

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. На узлах это устанавливает, насколько каждый узел отталкивает соседние узлы; а на ребрах это множитель для целевой длины ребра. См. Документация для получения более подробной информации.

...