Не удается правильно отобразить созданный вручную график с помощью 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.