Не удается правильно отобразить созданный вручную график с помощью Gephi Toolkit 0.9.1

Я пытаюсь использовать 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);

}

}

>> Вывод кода<<;;

1 ответ

Я нашел решение этой проблемы благодаря форумам Gephi. Мне нужно было установить координаты x и y узлов, чтобы они не были сложены друг на друга. Это было сделано с помощью методов node.setX и node.setY.

Другие вопросы по тегам