我使用Gephi来创建一个graphmodel,然后将其导出到一个.graphml文件中。但是,当我创建.graphml文件时,color属性不被维护。将Gephi导出为GraphML而不是维护节点颜色
以下是我如何从我的GraphClass(由类型E的边和类型V的节点组成)创建gephi图模型并将其导出到.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中直接y更改特定数据标签的值?我相信我的问题是graphml数据标签的格式不正确,不能被yED识别,并且这种不正确的格式可能与它如何写入文件有关。