Gephi:使用工具包创建和流式传输动态图

时间:2012-11-01 19:00:32

标签: java graph toolkit gephi

我正在尝试创建动态图并使用Gephi工具包对其进行流式处理。到目前为止,我已经按照工具包和流媒体插件教程创建了一个普通的图形并将其流式传输到Gephi GUI。

我很难弄清楚如何使图表动态化 - 我已设法使用TimeIntervalAttributeModel列添加到节点和边缘表中,但是当我打开时间轴窗口时在GUI中,它表示图形不是动态的。模型/控制器对我来说有点混乱。

这是我现在的代码:

ProjectController pc = Lookup.getDefault().lookup(ProjectController.class);
pc.newProject();
Workspace workspace = pc.getCurrentWorkspace();
AttributeController attributeController = Lookup.getDefault().lookup(AttributeController.class);
AttributeModel attributeModel = attributeController.getModel();
AttributeColumn nodeTimeColumn = attributeModel.getNodeTable().addColumn(DynamicModel.TIMEINTERVAL_COLUMN, AttributeType.TIME_INTERVAL, AttributeOrigin.PROPERTY);
AttributeColumn edgeTimeColumn = attributeModel.getEdgeTable().addColumn(DynamicModel.TIMEINTERVAL_COLUMN, AttributeType.TIME_INTERVAL, AttributeOrigin.PROPERTY);
GraphController graphController = Lookup.getDefault().lookup(GraphController.class);
GraphModel graphModel = graphController.getModel();
DirectedGraph graph = graphModel.getDirectedGraph();

// At this point, I want to make the graph dynamic so that I can use
// the Timeline feature when I stream to the GUI.

StreamingServer server = Lookup.getDefault().lookup(StreamingServer.class);
ServerControllerFactory controllerFactory = Lookup.getDefault().lookup(ServerControllerFactory.class);
ServerController serverController = controllerFactory.createServerController(graph);
String context = "/testing";
server.register(serverController, context);

1 个答案:

答案 0 :(得分:6)

原则上,Gephi Graph Streaming是一种替代方案,可以使用比加载大型动态图形更少的内存来实时显示图形中的变化。因此,在每个时间点,您没有内存中的完整动态图,而是表示图的当前状态的静态图。这就是为什么默认情况下,插件只创建和更新静态图。

不幸的是,使用图表流更新动态图表尚不可能。我们计划在不久的将来支持它,并且可以通过更改以下类别的操作来获得此类操作:

https://github.com/gephi/gephi-plugins/blob/graph-streaming/StreamingAPI/src/org/gephi/streaming/api/GraphUpdaterEventHandler.java

正如您在此文件中看到的那样,没有处理动态属性;添加,更改或删除新节点/边/属性,但动态列没有更新。