无法使用Gephi Toolkit 0.9.1正确显示手动创建的图形

时间:2016-06-09 20:17:30

标签: java toolkit gephi

我正在尝试使用Gephi Toolkit 0.9.1手动创建和显示图形,但我似乎无法获得正确的输出。我已经看到很多代码导入文件并从中创建一个图形,但该方法使用容器,如果你没有任何东西可以导入它们似乎没有意义。下面是我的代码(其中大部分只是将演示代码的碎片拼凑在一起)。下面是我得到的显示器的链接,它只是一个纯色矩形。它似乎只是一个边缘(虽然格式很奇怪),因为当我改变边缘颜色时,显示会相应地改变。我尝试了2个节点和1个边缘,以及3个节点和2个边缘。据我所知,两者都具有完全相同的输出。我对使用Gephi Toolkit非常陌生,所以我确定错误相当简单,我感谢您提供的任何帮助。谢谢!

杰森

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<<

1 个答案:

答案 0 :(得分:0)

由于Gephi论坛,我找到了解决方案。我需要设置节点的x和y坐标,以便它们不会堆叠在一起。这是通过使用node.setX和node.setY方法完成的。