帮帮我!我正在寻找创建一个Java应用程序,生成一个图形,可以使用以下任一格式之一:
- .graphml
- .ygf
- .gml
- .tgf
我需要能够在图形编辑器"yEd"中打开文件。
到目前为止,我已经找到了以下解决方案:
- yFiles For Java
- Pro: 能够导出 graphml,可以在 yEd 中打开,基于 Java,完美。
- 为什么我不能使用它:使用它需要花费我超过$2000,然而这正是我所需要的。
- Gephi
- 优点:免费,能够导出 graphml,基于 Java!
- 我为什么不能使用它:当我尝试在 yEd 中打开生成的 graphml 文件时,graphml 已损坏:它是线性的 - 一行,就像这个截图:
- 如果我能用它,那就太完美了。
- 我尝试生成的图是使用他们的示例项目生成的。
- JGraphX
- 优点:能够生成图形,基于 Java,免费
- 为什么我不能使用它:如何将生成的图形导出为 graphml?我没能弄清楚...
- Prefuse
- 优点:免费,生成图形,基于 Java
- 我为什么不能使用它:似乎我只能读取 graphml,而不能写入 graphml。此外,我使用 build.sh all 成功构建了演示项目,但当我尝试运行 demos.jar 时,出现“无法加载主类”的错误...
- Blueprints 与 GraphML Reader and Writer Library (Tinkerpop?)
- 优点:Java、免费,看起来可以使用它导出 graphml。
- 我为什么不能使用它:我很困惑,我需要与列出的一个“实现”一起使用它吗?我该怎么使用它?
- JGraphT 与 GraphMLExporter
- 优点:能够生成图形,基于 Java,免费,我想它可以导出 graphml。
- 为什么我不能使用它:我不知道如何导出它!当我尝试在 yed 中打开生成的 graphml 时,我得到了“yEd 遇到以下错误:无法导入文件 test.graphml。”我使用他们的示例项目,并做了这个:
我使用的JGraphT代码:
UndirectedGraph<String, DefaultEdge> g = new SimpleGraph<String, DefaultEdge>(DefaultEdge.class);
String v1 = "v1";
String v2 = "v2";
String v3 = "v3";
String v4 = "v4";
// add the vertices
g.addVertex(v1);
g.addVertex(v2);
g.addVertex(v3);
g.addVertex(v4);
// add edges to create a circuit
g.addEdge(v1, v2);
g.addEdge(v2, v3);
g.addEdge(v3, v4);
g.addEdge(v4, v1);
FileWriter w;
try {
GmlExporter<String, DefaultEdge> exporter =
new GmlExporter<String, DefaultEdge>();
w = new FileWriter("test.graphml");
exporter.export(w, g);
} catch (IOException e) {
e.printStackTrace();
}
有什么想法吗?谢谢!