7

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

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

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

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

  1. yFiles For Java
    • Pro:导出到graphml,可以在yEd中打开,基于Java,完美。
    • 为什么我不能使用它:使用会花费我超过2000 美元:( 这正是我所需要的
  2. 格菲
    • Pro:免费,导出到 graphml,基于 Java!
    • 为什么我不能使用它:当我尝试在 yEd 中打开生成的 graphml 文件时,graphml 被破坏:它是线性的 - 一行,就像这个截图
    • 在此处输入图像描述
    • 如果我让它工作,那么这是完美的
    • 我尝试的图表是使用他们的示例项目生成的
  3. JGraphX
    • 优点:能够生成图表,基于 Java,免费
    • 为什么我不能使用它:如何将生成的图形导出到 graphml?我想不通...
  4. 预熔
    • Pro:免费,图形生成,基于 Java
    • 我不能使用它:似乎我只能阅读 graphml,而不能写 graphml。另外,我用 build.sh all 构建了演示,但是当我尝试运行 demos.jar 时,我得到“加载主类失败”......
  5. 带有GraphML 阅读器和编写器库的蓝图 Tinkerpop?)
    • Pro:Java,免费,好像可以用它导出 graphml
    • 为什么我不能使用它:我很困惑,我是否需要将它与列出的“实现”之一结合使用?我该如何使用它?
  6. 带有GraphMLExporter的JGraphT
    • 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();
}

有任何想法吗?谢谢!

4

5 回答 5

8

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

于 2015-02-26T10:48:55.883 回答
2

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

于 2014-04-29T07:23:28.370 回答
2

只需将代码中的每次出现替换GmlExporterGraphMLExporter。那应该行得通。

于 2014-12-08T21:53:58.117 回答
2

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

GML-Writer-for-yED

于 2017-01-18T11:20:28.643 回答
1

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

于 2016-12-09T03:00:23.663 回答