2016-06-09 6 views
0

Gephi Toolkit 0.9.1을 수동으로 사용하여 그래프를 만들고 표시하려하지만 올바른 출력을 얻지 못하는 것 같습니다. 파일을 가져 와서 그로부터 그래프를 만드는 많은 코드를 보았습니다.하지만이 메서드는 컨테이너를 사용합니다.이 컨테이너는 가져올 항목이없는 경우 의미가없는 것처럼 보입니다. 아래는 내 코드입니다 (대부분은 함께 데모 코드 조각입니다). 아래는 제가 얻고있는 디스플레이에 대한 링크입니다. 이것은 단색의 직사각형입니다. 가장자리 색상을 변경했을 때 디스플레이가 그에 따라 변경 되었기 때문에 가장자리로 보입니다 (이상하게도 형식이 틀립니다). 나는 노드 2 개와 에지 1 개뿐만 아니라 노드 3 개와 에지 2 개로 시도했다. 둘 다 정확히 똑같은 출력을 가지고 있습니다. 저는 Gephi Toolkit을 사용하는 것에있어 매우 새로운 것이므로 실수가 상당히 간단하다는 것과 확신 할 만하다고 생각합니다. 고맙습니다!Gephi Toolkit 0.9.1로 수동으로 생성 된 그래프를 올바르게 표시 할 수 없음

제이슨

public class BasicGraphBuild { 

public static void main(String[] args) { 
    BasicGraphBuild bscGraphBuild = new BasicGraphBuild(); 
    bscGraphBuild.script(); 
} 

public void script() { 
    ProjectController pc = 
      Lookup.getDefault().lookup(ProjectController.class); 
    pc.newProject(); 
    Workspace workspace = pc.getCurrentWorkspace(); 

    GraphModel graphModel = Lookup.getDefault() 
      .lookup(GraphController.class).getGraphModel(); 

    Node n0 = graphModel.factory().newNode("n0"); 
    n0.setLabel("Node 0"); 
    Node n1 = graphModel.factory().newNode("n1"); 
    n1.setLabel("Node 1"); 
    Node n2 = graphModel.factory().newNode("n2"); 
    n2.setLabel("Node 2"); 

    Edge e1 = graphModel.factory().newEdge(n0, n1, 0, 1.0, true); 
    Edge e2 = graphModel.factory().newEdge(n0, n2, 0, 1.0, true); 

    DirectedGraph directedGraph = graphModel.getDirectedGraph(); 
    directedGraph.addNode(n0); 
    directedGraph.addNode(n1); 
    directedGraph.addNode(n2); 
    directedGraph.addEdge(e1); 
    directedGraph.addEdge(e2); 

    // Preview configuration 
    PreviewController previewController = 
      Lookup.getDefault().lookup(PreviewController.class); 
    PreviewModel previewModel = previewController.getModel(); 
    previewModel.getProperties().putValue(PreviewProperty.EDGE_CURVED, 
      Boolean.FALSE); 
    previewModel.getProperties().putValue(PreviewProperty.DIRECTED, 
      Boolean.TRUE); 
    previewModel.getProperties().putValue(PreviewProperty.EDGE_COLOR, 
      new EdgeColor(Color.CYAN)); 
    // previewModel.getProperties().putValue(PreviewProperty.EDGE_OPACITY, 
    // 50); 
    // previewModel.getProperties().putValue(PreviewProperty.EDGE_RADIUS, 
    // 10f); 
    previewModel.getProperties().putValue(PreviewProperty.BACKGROUND_COLOR, 
      Color.WHITE); 

    // New Processing target, get the PApplet 
    G2DTarget target = (G2DTarget) previewController 
      .getRenderTarget(RenderTarget.G2D_TARGET); 
    PreviewSketch previewSketch = new PreviewSketch(target); 
    previewController.refreshPreview(); 
    previewSketch.resetZoom(); 

    // Add the applet to a JFrame and display 
    JFrame frame = new JFrame("Test Preview"); 
    frame.setLayout(new BorderLayout()); 

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.add(previewSketch, BorderLayout.CENTER); 

    frame.setSize(1024, 768); 
    frame.setVisible(true); 

} 

} 

>>Output of the code<<

답변

0

은 내가 Gephi 포럼에이 해결책 감사를 발견했다. 노드의 x와 y 좌표를 서로 겹치지 않도록 설정해야했습니다. 이는 node.setX 및 node.setY 메소드를 사용하여 수행되었습니다.