如何用Java生成graphml文件.Gephi,JGraph,Prefuse等

Kat*_*tie 7 java graphml

救命!我正在寻找创建一个Java应用程序,它可以生成以下任何一种格式的图形:

  • .graphml
  • .ygf
  • .gml
  • .tgf

我需要能够在图形编辑器" yEd "中打开文件.

到目前为止,我找到了这些解决方案:

  1. yFiles For Java
    • Pro:导出到graphml,能够以yEd打开,基于Java,完美.
    • 为什么我不能使用它:使用费用超过2000美元 :(这正是我需要的
  2. Gephi
    • 亲:免费,导出到graphml,基于Java!
    • 为什么我不能使用它:当我尝试在yEd中打开生成的graphml文件时,graphml被破坏:它是线性的 - 一行,如下截图所示:
    • 在此输入图像描述
    • 如果我让它工作,那么这是完美的
    • 我试过的图是使用他们的示例项目生成的
  3. JGraphX
    • Pro:能够生成基于Java的图形,免费
    • 为什么我不能使用它:如何将生成的图形导出到graphml?我无法理解 ......
  4. Prefuse
    • Pro:免费,图形生成,基于Java
    • 我不能用它:似乎我只能读取graphml,而不能写graphml.另外,我使用build.sh all构建了这个演示,但是当我尝试运行demos.jar时,我得到了"无法加载Main-Class"......
  5. 蓝图 GraphML Reader和Writer图书馆( TinkerPop有关?)
    • Pro:Java,Free,好像你可以用它导出graphml
    • 为什么我不能使用它:我很困惑,我是否需要将其与所列的"实现"结合使用?我该如何使用它?
  6. 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();
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢!

小智 7

回答可能为时已晚,但对于第二个解决方案:将图形导入yEd后,只需单击"布局"并选择一个.yed不会为你选择一个作为默认值,这就是为什么它似乎是线性的.


小智 3

我还想导出 yED 的 JgraphT 图,但对结果不满意。因此,我创建了一个扩展的 GMLWriter,支持 yED 的特定 GML 格式(组、颜色、不同的边……)。

yED 的 GML 编写器