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

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

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

    到目前为止,我已经找到了这些解决方案:
  • yFiles For Java
  • Pro:导出为graphml,可以在yEd中打开,基于Java,完美。
  • 为什么我不能使用它:使用 的成本会超过 2000 美元 :( 这正是我需要的,但是
  • Gephi
  • Pro:免费,导出到 graphml,基于 Java!
  • 为什么我不能使用它:当我尝试在 yEd 中打开生成的 graphml 文件时, graphml 损坏了 :它是线性的 - 一行,就像这样 截图 :
  • 如果我让它工作,那就完美了
  • 我尝试的图表是使用他们的示例项目
  • 生成的
  • JGraphX
  • Pro:能够生成图形,基于 Java,免费
  • 为什么我不能使用它:如何将生成的图形导出到graphml? 我想不通 ...
  • Prefuse
  • Pro:免费,图形生成,基于 Java
  • 我不能使用的东西:似乎我只能 读取 graphml ,而不能写入 graphml。另外,我用 build.sh all 构建了很好的演示,但是当我尝试运行 demos.jar 时,我得到“无法加载主类”......
  • Blueprints GraphML Reader and Writer Library ( Tinkerpop ?)
  • Pro:Java,免费,好像你可以用它导出 graphml
  • 为什么我不能使用它:我很困惑,我是否需要将它与列出的“实现”之一结合使用?我如何使用它?
  • JGraphT GraphMLExporter
  • Pro:能够生成图形,基于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();
    }
    

    有任何想法吗?谢谢!

    最佳答案

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

    GML-Writer-for-yED

    10-06 08:58