Я использую Gephi для создания графовой модели, а затем экспортирую ее в файл .graphml. Однако, когда я создаю файл .graphml, атрибут цвета не сохраняется.
Ниже показано, как я создаю графовую модель gephi из своего GraphClass (состоящего из ребер типа E и узлов типа V) и экспортирую ее в файл .graphml. В этом случае я создаю случайное K-дерево
public void testCreateGraph() throws Exception {
KTree K1 = new KTree(4);
for (int i = 0; i < 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){
for (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){
for (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 only visible graph
GraphExporter exporter = (GraphExporter) ec.getExporter("gexf"); //Get GEXF exporter
exporter.setExportVisible(true); //Only exports the visible (filtered) graph
exporter.setWorkspace(workspace);
try {
ec.exportFile(new File("io_gexf.gexf"), exporter);
} catch (IOException ex) {
ex.printStackTrace();
return;
}
//Export to 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();
}
}
Я хочу установить для узлов красный цвет, но в yED они просто отображаются как по умолчанию желтый
Узел из GraphML выглядит следующим образом:
<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>
Есть ли способ в Gephi напрямую изменить значение определенного тега данных? Я считаю, что моя проблема заключается в том, что формат тега данных graphml неверен и не распознается yED, и что этот неправильный формат может быть связан с тем, как написан файл.