Я использую JGraphT для создания графика, и я хочу иметь возможность визуализировать и манипулировать им. Есть несколько примеров, которые показывают, как визуализировать график, но кажется, что он включает в себя довольно много ручного кода для компоновки вершин и т. Д. Мне было интересно, существует ли какой-либо алгоритм построения графа, который мог бы автоматизировать этот процесс уже в JGraph с небольшим примером. В основном графики, которые я рисую, - это ациклические графики. Я уже рисовал графики, экспортируя их в формат .dot и отображая его с помощью dot, но мне нужно немного взаимодействовать.Алгоритмы компоновки графа для JGraphT
1
A
ответ
2
С JGraph, кажется, теперь будет mxGraph, но JGraphT встраивать JGraph 5,13, это не так просто, но я нашел this doc и следующий фрагмент кода работает:
// this a a JGraphT graph
ListenableDirectedGraph<TableColumn, DefaultEdge> dependencyGraph = getDependencyGraph();
JGraphModelAdapter adapter = new JGraphModelAdapter(dependencyGraph);
JGraph jgraph = new JGraph(adapter);
JGraphLayout layout = new JGraphHierarchicalLayout(); // or whatever layouting algorithm
JGraphFacade facade = new JGraphFacade(jgraph);
layout.run(facade);
Map nested = facade.createNestedMap(false, false);
jgraph.getGraphLayoutCache().edit(nested);
JScrollPane sp = new JScrollPane(jgraph);
this.add(sp);