我正在尝试从 NetLogo do *.gexf 文件中保存 GraphStream/NetStream。图形具有恒定数量的边和顶点。正在改变的是节点/“海龟”的参数。目前,每次打勾后,我使用以下命令将信息从 NetLogo 发送到 2012 端口上的 localhost:
gs:add-sender "sender" "localhost" 2012
我可以在 java 项目中接收 GraphStream:
创建 CumulativeGraphAnalyser 的实例
NetStreamReceiver receiver = new NetStreamReceiver(2012);
new CumulativeGraphAnalyser(receiver, null);
这是 CumulativeGraphAnalyser 类
public class CumulativeGraphAnalyser extends SinkAdapter{
private NetStreamSender sender;
private Graph graph;
private String mySourceId;
private long myTimeId;
private int round;
public CumulativeGraphAnalyser(NetStreamReceiver receiver, NetStreamSender sender) {
this.sender = sender;
graph = new SingleGraph("cumulative graph", false, false);
ProxyPipe pipe = receiver.getDefaultStream();
pipe.addElementSink(graph);
pipe.addElementSink(this);
round = 1;
mySourceId = toString();
myTimeId = 0;
}
@Override
public void stepBegins(String sourceId, long timeId, double step) {
for (Node node : graph.getNodeSet()){
node.getAttribute("node-id");
node.getAttribute("infected");
(...)
}
System.out.println(round++);
}
}
'graph' 变量中有我需要的所有信息,但我不知道如何将 GraphStream 保存到文件 (*.gxef) 中,然后将其导入 Gephi。另一种选择是直接从 localhost:2012 读取 Gephi 中的 GraphStream。我找到了可以处理此任务的插件,但我不知道如何正确使用它。我已经搜索并阅读了有关此问题的大量信息,并且尝试实施一些解决方案,但没有一个没有解决。