Help! I'm looking to create a Java application that generates a graph in any one of these formats:
- .graphml
- .ygf
- .gml
- .tgf
I need to be able to open the file in the graph editor "yEd".
So far, I have found these solutions:
- yFiles For Java
- Pro: Export to graphml, able to open in yEd, Java based, perfect.
- Why I can't use it: Would cost me more than $2000 to use :( it is exactly what I need however
- Gephi
- Pro: FREE, Export to graphml, Java based!
- Why I can't use it: When I try to open the generated graphml file in yEd, the graphml is broken: it's linear - one line, like this screenshot:
- If I get it to work, then this is perfect
- The graph I tried was generated using their example project
- JGraphX
- Pro: Able to generate a graph, Java based, FREE
- Why I can't use it: How to export the generated graph to graphml? I couldn't figure it out...
- Prefuse
- Pro: Free, graph generation, Java based
- What I can't use it: Seems like I can only read graphml, and not write graphml. Also, I built the demos fine with build.sh all, but then when I tried to run demos.jar, I got "Failed to load Main-Class"...
- Blueprints with GraphML Reader and Writer Library (Tinkerpop?)
- Pro: Java, Free, seems like you can export graphml with it
- Why I can't use it: I'm confused, do I need to use this in conjunction with one of the "Implementations" listed? How do I use this?
- JGraphT with GraphMLExporter
- Pro: Able to generate graph, Java based, free, can export to graphml I think
- Why I can't use it: I can't figure out how to export it! When I tried to open the generated graphml in yed, I got "yEd has encountered the following error: Could not import file test.graphml." I used thier example project, and did this:
JGraphT Code I Used:
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();
}
Any ideas? Thanks!