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

时间:2014-04-28 19:17:47

标签: java graphml

帮助!我想创建一个 Java应用程序 生成图表以下任何一种格式:

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

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

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

  1. yFiles For Java
    • Pro:导出到graphml,能够在yEd中打开,基于Java,完美。
    • 为什么我不能使用它:使用的费用超过 $ 2000 :(这正是我需要的但是
  2. Gephi
    • Pro:FREE,导出到graphml,基于Java!
    • 为什么我不能使用它:当我尝试在yEd中打开生成的graphml文件时, graphml被破坏:它是线性的 - 一行,就像这样截图
    • enter image description here
    • 如果我开始工作,那就完美了
    • 我尝试的图表是使用他们的示例项目
    • 生成的
  3. JGraphX
    • Pro:能够生成图形,基于Java,免费
    • 为什么我不能使用它:如何将生成的图形导出到graphml? 我无法弄清楚 ......
  4. Prefuse
    • Pro:免费,图形生成,基于Java
    • 我不能使用它:似乎我可以只读graphml ,而不是写graphml。另外,我使用build.sh all构建了这个演示,但是当我尝试运行demos.jar时,我“无法加载Main-Class”......
  5. Blueprints GraphML Reader and Writer Library Tinkerpop?)
    • Pro:Java,Free,好像你可以用它导出graphml
    • 为什么我不能使用它:我很困惑,我是否需要将其与所列的“实施”结合使用?我该如何使用它?
  6. 使用 JGraphT
  7. GraphMLExporter
    • Pro:能够生成图形,基于Java,免费,可以导出到graphml我认为
    • 为什么我不能使用它:我无法弄清楚如何导出它!当我尝试在yed中打开生成的graphml时,我得到“ yEd 遇到以下错误无法导入文件test.graphml 。 “我使用了他们的示例项目,并做了这个:
  8. 我使用的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();
    }
    

    有什么想法吗?谢谢!

5 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:2)

我不知道这是否适合您的使用案例,但我使用neo4j创建图表,然后使用neo4j-shell-tools将图表导出为graphml。也许这对你有用。

答案 2 :(得分:2)

只需在代码中用GmlExporter替换GraphMLExporter的每一个匹配项。这应该有用。

答案 3 :(得分:2)

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

GML-Writer-for-yED

答案 4 :(得分:1)

我正在使用de Prefuse库,您可以使用de class GraphMLWriter从Graph对象生成GraphML文件。