我正在尝试使用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);
}
}
答案 0 :(得分:0)
由于Gephi论坛,我找到了解决方案。我需要设置节点的x和y坐标,以便它们不会堆叠在一起。这是通过使用node.setX和node.setY方法完成的。