@Override public <N, E> void visualize(Graph<N, E> graph, List<VisualizationHelper<N, ? super E>> helpers, boolean modal, Map<String, String> options) { DirectedGraph<NodeVisualization, EdgeVisualization> visGraph = createVisualizationGraph(graph, helpers); Layout<NodeVisualization, EdgeVisualization> layout = new KKLayout<>(visGraph); VisualizationViewer<NodeVisualization, EdgeVisualization> vv = new VisualizationViewer<>(layout); setupRenderContext(vv.getRenderContext()); setupRenderer(vv.getRenderer()); vv.setGraphMouse(mouse); final JDialog frame = new JDialog((Dialog) null, "Visualization", modal); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.getContentPane().add(vv); frame.pack(); frame.setVisible(true); }
public void step() { try { currentIteration++; double energy = calcEnergy(); status = "Kamada-Kawai V=" + getGraph().getVertexCount() + "(" + getGraph().getVertexCount() + ")" + " IT: " + currentIteration + " E=" + energy int n = getGraph().getVertexCount(); if (n == 0) return; int pm = -1; // the node having max deltaM for (int i = 0; i < n; i++) { if (isLocked(vertices[i])) continue; double deltam = calcDeltaM(i); double[] dxy = calcDeltaXY(pm); xydata[pm].setLocation(xydata[pm].getX()+dxy[0], xydata[pm].getY()+dxy[1]); double deltam = calcDeltaM(pm); if (deltam < EPSILON) break; adjustForGravity(); energy = calcEnergy(); for (int i = 0; i < n - 1; i++) {
/** * Calculates the bounds of all nodes in a given layout. * * @return Point2D[] min bounds, max bounds */ private Point2D[] calcBounds() { Point2D[] result = new Point2D[2]; Point2D min = null; Point2D max = null; Iterator<ONDEXMetaConcept> it = layout.getGraph().getVertices().iterator(); while (it.hasNext()) { Point2D point = layout.transform(it.next()); if (min == null) { min = new Point2D.Double(0, 0); min.setLocation(point); } if (max == null) { max = new Point2D.Double(0, 0); max.setLocation(point); } min.setLocation(Math.min(min.getX(), point.getX()), Math.min(min.getY(), point.getY())); max.setLocation(Math.max(max.getX(), point.getX()), Math.max(max.getY(), point.getY())); } result[0] = min; result[1] = max; return result; }
@Override public void actionPerformed(ActionEvent e) { final GraphViewerPanel viewerPanel = (GraphViewerPanel) frame.getTabbedPane().getSelectedComponent(); KKLayout kkLayout = new KKLayout<String, String>(viewerPanel.getCurrentGraph()); kkLayout.setMaxIterations(700); MyVisualizationViewer vv = (MyVisualizationViewer) viewerPanel.getVisualizationViewer(); vv.setGraphLayout(kkLayout); vv.repaint(); } }
@Override public void setSize(Dimension size) { if(initialized == false) setInitializer(new RandomLocationTransformer<V>(size)); super.setSize(size); }
int index = 0; for(V v : graph.getVertices()) { Point2D xyd = transform(v); vertices[index] = v; xydata[index] = xyd;
KKLayout kkLayout = new KKLayout<String, String>(graph); kkLayout.setMaxIterations(maxIterations);
/** * Calculates the bounds of all nodes in a given layout. * * @return Point2D[] min bounds, max bounds */ private Point2D[] calcBounds() { Point2D[] result = new Point2D[2]; Point2D min = null; Point2D max = null; Iterator<ONDEXMetaConcept> it = layout.getGraph().getVertices() .iterator(); while (it.hasNext()) { Point2D point = layout.transform(it.next()); if (min == null) { min = new Point2D.Double(0, 0); min.setLocation(point); } if (max == null) { max = new Point2D.Double(0, 0); max.setLocation(point); } min.setLocation(Math.min(min.getX(), point.getX()), Math.min(min.getY(), point.getY())); max.setLocation(Math.max(max.getX(), point.getX()), Math.max(max.getY(), point.getY())); } result[0] = min; result[1] = max; return result; }
@Override public void setSize(Dimension size) { if(initialized == false) setInitializer(new RandomLocationTransformer<V>(size)); super.setSize(size); }
private static AbstractLayout<Vertex, Edge> getLayout(GraphJung<Graph> graph, String layoutName) { switch (layoutName) { case "KKLayout": return new KKLayout<>(graph); case "CircleLayout": return new CircleLayout<>(graph); case "FRLayout": return new FRLayout<>(graph); case "FRLayout2": return new FRLayout2<>(graph); case "ISOMLayout": return new ISOMLayout<>(graph); case "SpringLayout": return new SpringLayout<>(graph); default: return new KKLayout<>(graph); } }
public void step() { try { currentIteration++; double energy = calcEnergy(); status = "Kamada-Kawai V=" + getGraph().getVertexCount() + "(" + getGraph().getVertexCount() + ")" + " IT: " + currentIteration + " E=" + energy int n = getGraph().getVertexCount(); if (n == 0) return; int pm = -1; // the node having max deltaM for (int i = 0; i < n; i++) { if (isLocked(vertices[i])) continue; double deltam = calcDeltaM(i); double[] dxy = calcDeltaXY(pm); xydata[pm].setLocation(xydata[pm].getX()+dxy[0], xydata[pm].getY()+dxy[1]); double deltam = calcDeltaM(pm); if (deltam < EPSILON) break; adjustForGravity(); energy = calcEnergy(); for (int i = 0; i < n - 1; i++) {
@Override public <N, E> void visualize(Graph<N, E> graph, List<VisualizationHelper<N, ? super E>> additionalHelpers, boolean modal, Map<String, String> options) { DirectedGraph<NodeVisualization, EdgeVisualization> visGraph = createVisualizationGraph(graph, additionalHelpers); Layout<NodeVisualization, EdgeVisualization> layout = new KKLayout<>(visGraph); VisualizationViewer<NodeVisualization, EdgeVisualization> vv = new VisualizationViewer<>(layout); setupRenderContext(vv.getRenderContext()); setupRenderer(vv.getRenderer()); vv.setGraphMouse(mouse); final JDialog frame = new JDialog((Dialog) null, "Visualization", modal); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.getContentPane().add(vv); frame.pack(); frame.setVisible(true); }
private Layout<Node, Edge> newLayout(final Diagram diagram) { final Layout<Node, Edge> diagramLayout; if (layout != null && layout.startsWith("spring")) { diagramLayout = new SpringLayout<Node, Edge>(diagram, new ConstantTransformer(Integer.parseInt(config("spring", "100")))); } else if (layout != null && layout.startsWith("kk")) { Distance<Node> distance = new DijkstraDistance<Node, Edge>(diagram); if (layout.endsWith("unweight")) { distance = new UnweightedShortestPath<Node, Edge>(diagram); } diagramLayout = new KKLayout<Node, Edge>(diagram, distance); } else if (layout != null && layout.equalsIgnoreCase("circle")) { diagramLayout = new CircleLayout<Node, Edge>(diagram); } else if (layout != null && layout.equalsIgnoreCase("fr")) { diagramLayout = new FRLayout<Node, Edge>(diagram); } else { final LevelLayout levelLayout = new LevelLayout(diagram); levelLayout.adjust = adjust; diagramLayout = levelLayout; } return diagramLayout; }
m_rwLock.readLock().lock(); try { Layout<GraphVertex,GraphEdge> layout = new KKLayout<GraphVertex,GraphEdge>(m_g); layout.setSize(new Dimension(1024,1024)); // Size of the layout
public static void renderGraphToFile(Graph<VertexRef, Edge> jungGraph, File file) { final edu.uci.ics.jung.algorithms.layout.Layout<VertexRef, Edge> jungLayout = new KKLayout<>(jungGraph); jungLayout.setSize(new Dimension(1800,1800)); // Size of the layout
layout = new KKLayout<String, UnorderedPair<String>>(graph); layout.setSize(new Dimension(animationWidth, animationHeight)); Relaxer relaxer = new VisRunner((IterativeContext) layout);
public static void renderGraphToFile(Graph<VertexRef, Edge> jungGraph, File file) { final edu.uci.ics.jung.algorithms.layout.Layout<VertexRef, Edge> jungLayout = new KKLayout<>(jungGraph); jungLayout.setSize(new Dimension(1800,1800)); // Size of the layout