java - Exporting Gephi to GraphML not maintaining Node colour -
i'm using gephi create graphmodel , export .graphml file. when create .graphml file colour attribute not maintained.
the following how create gephi graphmodel graphclass (comprised of edges of type e, , nodes of type v) , export .graphml file. in case create random k-tree
public void testcreategraph() throws exception { ktree k1 = new ktree(4); (int = 0; < 95; i++) { k1.addrandomvertex(); } graphmlcreator<kvertex,kedge<kvertex>> creator = new graphmlcreator(); creator.create(k1); creator.sendtodb(); } public void create(graphclass<v,e> g){ graph = graphmodel.getundirectedgraph(); this.addnodes(g.getvertices()); this.addedges(g.getedges()); } private void addedges(collection<e> edges){ (e e: edges){ node n0 = graph.getnode(e.getendpoints().getfirst().getlabel()); node n1 = graph.getnode(e.getendpoints().getsecond().getlabel()); org.gephi.graph.api.edge e1 = graphmodel.factory().newedge(n0, n1, 1f, false); graph.addedge(e1); } } private void addnodes(collection<v> nodes){ (v v:nodes){ node n0 = graphmodel.factory().newnode(v.getlabel()); n0.getnodedata().setlabel(v.getlabel()); n0.getnodedata().setcolor(255,0,0); graph.addnode(n0); } } public void creategraphml(){ //export full graph exportcontroller ec = lookup.getdefault().lookup(exportcontroller.class); try { ec.exportfile(new file("io_gexf.gexf")); } catch (ioexception ex) { ex.printstacktrace(); return; } //export visible graph graphexporter exporter = (graphexporter) ec.getexporter("gexf"); //get gexf exporter exporter.setexportvisible(true); //only exports visible (filtered) graph exporter.setworkspace(workspace); try { ec.exportfile(new file("io_gexf.gexf"), exporter); } catch (ioexception ex) { ex.printstacktrace(); return; } //export writer exporter exportergraphml = ec.getexporter("graphml"); //get graphml exporter exportergraphml.setworkspace(workspace); stringwriter stringwriter = new stringwriter(); ec.exportwriter(stringwriter, (characterexporter) exportergraphml); filewriter fw = null; try { fw = new filewriter("my-file.graphml"); fw.write(stringwriter.tostring()); fw.close(); } catch (ioexception e) { e.printstacktrace(); } } i want set colour of nodes red in yed shows them default yellow
a node graphml looks follows:
<node id="v0"> <data key="label">v0</data> <data key="size">1.0</data> <data key="r">65025</data> <data key="g">0</data> <data key="b">0</data> <data key="x">418.6446</data> <data key="y">-191.08676</data> </node> is there way in gephi directly change value of specific data tag? believe problem format of graphml data tag incorrect , not recognized yed, , incorrect format may have how file written.
for graphical information yed uses additional namespace. have use it. 1 node graphml file should followed.
the way can create gephi , java don't know @ moment.
but if possible create somehow lines arround "node" tag, have change < node id="yourlabel" > , < y:fill color="#ff0000" > node color. node id changed yed "n0" when save file using yed. additionally should explicitly set real node label, find before "yourlabel < y:labelmodel >" .
<?xml version="1.0" encoding="utf-8" standalone="no"?> <graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:java="http://www.yworks.com/xml/yfiles-common/1.0/java" xmlns:sys="http://www.yworks.com/xml/yfiles-common/markup/primitives/2.0" xmlns:x="http://www.yworks.com/xml/yfiles-common/markup/2.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemalocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd"> <key attr.name="beschreibung" attr.type="string" for="graph" id="d0"/> <key for="port" id="d1" yfiles.type="portgraphics"/> <key for="port" id="d2" yfiles.type="portgeometry"/> <key for="port" id="d3" yfiles.type="portuserdata"/> <key attr.name="url" attr.type="string" for="node" id="d4"/> <key attr.name="description" attr.type="string" for="node" id="d5"/> <key for="node" id="d6" yfiles.type="nodegraphics"/> <key for="graphml" id="d7" yfiles.type="resources"/> <key attr.name="url" attr.type="string" for="edge" id="d8"/> <key attr.name="description" attr.type="string" for="edge" id="d9"/> <key for="edge" id="d10" yfiles.type="edgegraphics"/> <graph edgedefault="directed" id="g"> <data key="d0"/> <node id="yourlabel"> <data key="d6"> <y:shapenode> <y:geometry height="30.0" width="30.0" x="415.0" y="203.0"/> <y:fill color="#ff0000" transparent="false"/> <y:borderstyle color="#000000" type="line" width="1.0"/> <y:nodelabel alignment="center" autosizepolicy="content" fontfamily="dialog" fontsize="12" fontstyle="plain" hasbackgroundcolor="false" haslinecolor="false" height="18.701171875" modelname="custom" textcolor="#000000" visible="true" width="58.708984375" x="-14.3544921875" y="5.6494140625">yourlabel<y:labelmodel> <y:smartnodelabelmodel distance="4.0"/> </y:labelmodel> <y:modelparameter> <y:smartnodelabelmodelparameter labelratiox="0.0" labelratioy="0.0" noderatiox="0.0" noderatioy="0.0" offsetx="0.0" offsety="0.0" upx="0.0" upy="-1.0"/> </y:modelparameter> </y:nodelabel> <y:shape type="rectangle"/> </y:shapenode> </data> </node> </graph> <data key="d7"> <y:resources/> </data> </graphml>
Comments
Post a Comment