Gephi API学习笔记1
Gephi API学习笔记1记录使用Gephi API的学习笔记。环境配置安装好JDK环境安装NetBeans IDE将gephi-toolkit-0.9.2-all.jar下载完成下载与安装JDK的配置下载安装过程略去,详细可参考其他Java环境安装配置的教程NetBeans IDE的下载与安装下载链接:https://netbeans.org/download...
·
Gephi API学习笔记1
记录使用Gephi API的学习笔记。
环境配置
- 安装好JDK环境
- 安装NetBeans IDE
- 将gephi-toolkit-0.9.2-all.jar下载完成
下载与安装
- JDK的配置
下载安装过程略去,详细可参考其他Java环境安装配置的教程
- NetBeans IDE的下载与安装
下载链接:https://netbeans.org/downloads/index.html,这里有很多不同的下载包,选择适合自己系统的其中一个即可,这里我选择的是Java EE
安装时,按提示一路安装下去即可。
- gephi-toolkit-0.9.2-all.jar的下载
下载链接:https://gephi.org/toolkit/
将gephi-toolkit作为jar包导入库
- 新建一个Java应用程序后,在库(library)里右键添加JAR/文件夹然后找到下载的gephi-toolkit文件的jar包即可
一个简单示例
接下来展示一个简单示例,其中Gephi所需的绘图数据文件需要其他放置到相应文件夹中:
在NetBeans IDE中新建一个Java应用,导入gephi-toolkit.jar包后,创建一个主类,这里我将其命名为GephiTestDemo.java。其代码内容为:
package gephitestdemo;
/**
* @author Qi
*/
public class GephiTestDemo {
public static void main(String[] args) {
GephiDemo g = new GephiDemo();
g.Run();
}
}
继续新建一个Java文件名叫GephiDemo.java其代码内容为:
package gephitestdemo;
import java.io.File;
import org.gephi.graph.api.DirectedGraph;
import org.gephi.graph.api.GraphController;
import org.gephi.graph.api.GraphModel;
import org.gephi.io.importer.api.Container;
import org.gephi.io.importer.api.EdgeDirectionDefault;
import org.gephi.io.importer.api.EdgeMergeStrategy;
import org.gephi.io.importer.api.ImportController;
import org.gephi.io.processor.plugin.AppendProcessor;
import org.gephi.io.processor.plugin.DefaultProcessor;
import org.gephi.project.api.ProjectController;
import org.gephi.project.api.Workspace;
import org.openide.util.Lookup;
import org.openide.util.Utilities;
/**
*
* @author Qi
*/
public class GephiDemo {
GephiDemo(){
}
/**
*运行程序
*/
public void Run(){
//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("./resources/Critical Power for Asymptotic Connectivity in Wireless Networks/Nodes.csv").toURI());
container = importController.importFile(file_node);
container.getLoader().setEdgeDefault(EdgeDirectionDefault.DIRECTED); //Force DIRECTED
container.getLoader().setAllowAutoNode(false); //create missing nodes
container.getLoader().setEdgesMergeStrategy(EdgeMergeStrategy.SUM);
container.getLoader().setAutoScale(true);
File file_edge = new File(getClass().getResource("./resources/Critical Power for Asymptotic Connectivity in Wireless Networks/Edges.csv").toURI());
container2 = importController.importFile(file_edge);
container2.getLoader().setEdgeDefault(EdgeDirectionDefault.DIRECTED); //Force DIRECTED
container2.getLoader().setAllowAutoNode(false); //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((org.gephi.io.importer.api.Container) container, new DefaultProcessor(), workspace);
importController.process((org.gephi.io.importer.api.Container) 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());
}
}
运行正常的话,这里会输出节点数目与边的数目。
但如果导入节点文件后再导入边文件,会导致最后统计的节点数目为原来的两倍,这里我也不知道为什么。可以尝试只导入边文件来将度为0的节点忽略掉,这样不会导致节点重复的。
参考
- 在NetBeans里使用Gephi-Toolkit来对网络进行分析,http://izhaoyi.top/2017/12/05/gephi-tool-kit/
- How to code with the Toolkit,https://github.com/gephi/gephi/wiki/How-to-code-with-the-Toolkit
- Javadoc,https://gephi.org/gephi/0.9.2/apidocs/
更多推荐
已为社区贡献1条内容
所有评论(0)