我正在使用Gephi创建一个图形模型,然后将其导出到一个 .graphml 文件中。但是,当我创建 .graphml 文件时,不会保留颜色属性。
以下是我如何从我的 GraphClass(由 E 类型的边和 V 类型的节点组成)创建一个 gephi 图模型并将其导出到 .graphml 文件。在这种情况下,我创建了一个随机 K-tree
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 无法识别,并且这种不正确的格式可能与文件的写入方式有关。