簡體   English   中英

Java中如何生成graphml文件。Gephi、JGraph、Prefuse等

[英]How to generate a graphml file in Java. Gephi, JGraph, Prefuse, etc

幫助! 我希望創建一個Java 應用程序,它可以生成以下任一格式的圖形

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

我需要能夠在圖形編輯器yEd打開文件

到目前為止,我已經找到了這些解決方案:

  1. yFiles 為 Java
    • Pro:導出為 graphml,能夠在 yEd 中打開,基於 Java,完美。
    • 為什么我不能使用它:使用它會花費我超過2000 美元:( 然而這正是我所需要的
  2. 蓋菲
    • Pro:免費,導出為 graphml,基於 Java!
    • 為什么我不能使用它:當我嘗試在 yEd 中打開生成的 graphml 文件時, graphml 被破壞了:它是線性的 - 一行,就像這個截圖
    • 在此處輸入圖像描述
    • 如果我讓它工作,那就完美了
    • 我嘗試的圖表是使用他們的示例項目生成的
  3. JGraphX
    • Pro:能夠生成圖表,基於 Java,免費
    • 為什么我不能使用它:How to export the generated graph to graphml? 我想不通...
  4. 預置
    • Pro:免費,圖形生成,基於 Java
    • 我不能使用它的地方:好像我只能讀 graphml ,而不能寫 graphml 。 另外,我用 build.sh 全部構建了演示,但是當我嘗試運行 demos.jar 時,我得到“無法加載主類”...
  5. 帶有GraphML Reader 和 Writer 庫藍圖Tinkerpop ?)
    • Pro: Java,免費,好像你可以用它導出 graphml
    • 為什么我不能使用它:我很困惑,我需要將它與列出的“實現”之一結合使用嗎? 我該如何使用它?
  6. JGraphTGraphMLExporter
    • 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后,只需單擊“布局”並選擇一個。 yed不會為你選擇一個作為默認值,這就是為什么它似乎是線性的。

我不知道這是否適合您的用例,但我使用neo4j創建圖形,然后使用neo4j-shell-tools將圖形導出為graphml。 也許這對你有用。

只需在代碼中用GraphMLExporter替換每次出現的GmlExporter GraphMLExporter 這應該工作。

我也想為yED導出JgraphT圖,但對結果不滿意。 因此,我創建了一個擴展的GMLWriter,支持yED的特定GML格式(組,顏色,不同邊緣......)。

GML-作家換YED

我正在使用de Prefuse庫,您可以使用de class GraphMLWriter從Graph對象生成GraphML文件。

我創建了一個小教程/Github Repo和示例代碼,介紹如何使用 JgraphT 的類導出到 GraphML 和 GML,以及結果在 yED 中的樣子。

正如另一個答案中已經提到的,如果您不想自己做太多配置, GML-Writer-for-yED可能會很方便。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM