gpt4 book ai didi

toolkit - 在 java 中使用 gephi 工具包导入节点和边缘 CSV

转载 作者:行者123 更新时间:2023-12-04 16:09:51 38 4
gpt4 key购买 nike

我需要使用 Java 中的 gephi 工具包开发图形。我有 CSV 格式的节点和边缘数据。所有工具包教程都有导入 gml 或 gexf 格式的语法。因为我有 2 个 CSV 文件,谁能告诉我使用 gephi 工具包 jar 在 Java 中导入这个 csv 的语法?

最佳答案

你最好尝试同时用gephi-tool-kit和gephi导入csv文件,看看有没有问题,现在我把我找到的用gephi-toolkit导入csv文件的方法展示给大家一步一步。


这里我使用NetBeans IDE 8.2gephi-toolkit-0.9.2-all.jar并引用来自 github 的几个演示.

在创建一个新的 Java 项目和一个新的 Java 类之后,我的测试类名为 Transfer95,当然您还需要将 gephi-toolkit jar 文件添加到您的库中。根据gephi-toolkit的教程和javadoc,使用新工具包有很多变化,似乎可以使用导入方法导入几种不同类型的文件,如gexf和csv文件。

前几行代码是相同的通用代码,用于初始化项目和获取 Controller 或容器。

//Init a project - and therefore a workspace
ProjectController pc = Lookup.getDefault().lookup(ProjectController.class);
pc.newProject();
Workspace workspace = pc.getCurrentWorkspace();

//Get controllers and models
ImportController importController = Lookup.getDefault().lookup(ImportController.class);

//Get models and controllers for this new workspace - will be useful later
GraphModel graphModel = Lookup.getDefault().lookup(GraphController.class).getGraphModel();

//Import file
Container container;
try {
File file_node = new File(getClass().getResource("/resourceason2/club_1_1995.csv").toURI());
container = importController.importFile(file_node);
container.getLoader().setEdgeDefault(EdgeDirectionDefault.DIRECTED); //Force DIRECTED
container.getLoader().setAllowAutoNode(true); //create missing nodes
container.getLoader().setEdgesMergeStrategy(EdgeMergeStrategy.SUM);
container.getLoader().setAutoScale(true);

} catch (Exception ex) {
ex.printStackTrace();
return;
}

这里我只是尝试在ImportExportHeadlessSimple 的演示中使用与gexf 相同的importController 方法导入节点csv 文件,并且成功了,但这里我们还需要将边缘csv文件导入网络,我终于从GenerateGraph的演示中找到了答案,它可以将新容器附加到当前工作空间,所以导入csv文件之后的代码是

    //Init a project - and therefore a workspace
ProjectController pc = Lookup.getDefault().lookup(ProjectController.class);
pc.newProject();
Workspace workspace = pc.getCurrentWorkspace();

//Get controllers and models
ImportController importController = Lookup.getDefault().lookup(ImportController.class);

//Get models and controllers for this new workspace - will be useful later
GraphModel graphModel = Lookup.getDefault().lookup(GraphController.class).getGraphModel();

//Import file
Container container,container2;
try {
File file_node = new File(getClass().getResource("/resourceason2/club_1_1995.csv").toURI());
container = importController.importFile(file_node);
container.getLoader().setEdgeDefault(EdgeDirectionDefault.DIRECTED); //Force DIRECTED
container.getLoader().setAllowAutoNode(true); //create missing nodes
container.getLoader().setEdgesMergeStrategy(EdgeMergeStrategy.SUM);
container.getLoader().setAutoScale(true);

File file_edge = new File(getClass().getResource("/resourceason2/transfer_1_1995.csv").toURI());
container2 = importController.importFile(file_edge);
container2.getLoader().setEdgeDefault(EdgeDirectionDefault.DIRECTED); //Force DIRECTED
container2.getLoader().setAllowAutoNode(true); //create missing nodes
container2.getLoader().setEdgesMergeStrategy(EdgeMergeStrategy.SUM);
container2.getLoader().setAutoScale(true);

} catch (Exception ex) {
ex.printStackTrace();
return;
}

这里我们需要将新容器追加到同一个工作区

    //Append imported data to GraphAPI
importController.process(container, new DefaultProcessor(), workspace);
importController.process(container2, new AppendProcessor(), workspace); //Use AppendProcessor to append to current workspace

最后检查你的网络是否正确

    //See if graph is well imported
DirectedGraph graph = graphModel.getDirectedGraph();
System.out.println("Nodes: " + graph.getNodeCount());
System.out.println("Edges: " + graph.getEdgeCount());

这就是为什么我建议您同时测试 gephi 和 gephi-toolkit 导入的 csv 文件。这就是我的虚拟代码,希望它能帮助到你,也许会有更好的答案。

引用资料

关于toolkit - 在 java 中使用 gephi 工具包导入节点和边缘 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44403007/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com