2

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

我很难弄清楚如何使图表动态化 - 我已经设法使用 将TimeInterval列添加到节点和边缘表,AttributeModel但是当我在 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);
4

1 回答 1

6

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

不幸的是,目前还不可能使用图流更新动态图。我们计划在不久的将来支持它,这些操作将通过更改以下类的操作来实现:

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

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

于 2012-11-02T10:41:21.517 回答