如何处理gexf文件?
所做的项目需要处理gexf文件,好像是1.3版本的。想问一下,如何在C++或者Java程序中读取gexf文件得到点和边的信息?或者用更简单的方法,如何能命令行/终端的方式...
所做的项目需要处理gexf文件,好像是1.3版本的。想问一下,如何在C++或者Java程序中读取gexf文件得到点和边的信息?或者用更简单的方法,如何能命令行/终端的方式来利用gephi直接将文件批量输出到csv格式?谢谢~
展开
1个回答
2015-12-10
展开全部
版权所有2008-2010 Gephi的
作者:马修Bastian <mathieu.bastian@gephi.org>的
网址:http://www.gephi.org的
此文件属于Gephi。
Gephi是自由软件:您可以重新分配和/或修改
根据GNU Affero通用公共许可证的条款
自由软件基金会,无论是第3版的出版
许可证,或(在你的选项)任何更新的版本。
Gephi分布在希望,这将是有用的,
但没有任何担保,甚至没有隐含的担保
适销性或针对特定用途的适用性。请参阅
GNU Affero通用公共许可证的更多细节。
您应该已经收到GNU Affero通用公共许可证的副本
随着Gephi。如果没有看到<http://www.gnu.org/licenses/>。
* /
包org.gephi.toolkit.demos;
进口的java.io.File;
进口java.io.IOException异常;
导入java.util.concurrent.TimeUnit;
进口org.gephi.graph.api.DirectedGraph;
进口org.gephi.graph.api.GraphController;
导入org.gephi.graph.api.GraphModel;
进口org.gephi.io.exporter.api.ExportController;
进口org.gephi.io.importer.api.Container;
导入org.gephi.io.importer.api.EdgeDefault;
进口org.gephi.io.importer.api.ImportController;
导入org.gephi.io.processor.plugin.DefaultProcessor;
导入org.gephi.layout.plugin.AutoLayout;
导入org.gephi.layout.plugin.force.StepDisplacement;
导入org.gephi.layout.plugin.force.yifanHu.YifanHuLayout;
导入org.gephi.layout.plugin.forceAtlas.ForceAtlasLayout;
进口org.gephi.project.api.ProjectController;
导入org.gephi.project.api.Workspace;
导入org.openide.util.Lookup;
/ **
*本演示展示了如何使用的<code>自动版式</ code>类运行布局
*编程。
* <P>
*您可以设置一个的布局持续时间,比几个布局和执行。为
*比如你设置0.8为胡一帆算法和0.2标签调整。如果
*执行时间为100秒,则80秒的第一算法运行和
*秒20秒。它还允许动态改变属性值
*(按一定比例或内插,如果值是数值)。
*
* @作者马修巴斯蒂安
* /
公共 类 WithAutoLayout {
公共 无效 脚本(){
/ /初始化一个项目 - 工作区
/ /һĿ - һ
ProjectController PC = Lookup.getDefault()。查找(ProjectController.类);
pc.newProject();
工作区工作区= pc.getCurrentWorkspace();
/ /附加容器图形结构
/ /图像νṹ
ImportController importController = Lookup.getDefault()。查找(ImportController. 类);
/ /导入文件
/ / L
集装箱容器;
尝试 {
档案文件
容器:= importController.importFile(文件);
container.getLoader()。setEdgeDefault(EdgeDefault.DIRECTED); / /力
(container.setAllowAutoNode ; / /不要创建缺少的节点
} 赶上 (例外){
ex.printStackTrace();
返回;
}
importController.process(容器,的新 DefaultProcessor(),工作区);
/ /查看图以及进口
/ /ͼ
而GraphModel而GraphModel = Lookup.getDefault()。查找(GraphController. 类)。getModel();
的DirectedGraph图= graphModel.getDirectedGraph();
( I = 1 ; <= graph.getNodeCount(); + +){
/ /(“节点:”+ graph.getNode(I)。getNodeData());
}
(“边缘:” + graph.getEdgeCount());
/ /布局1分钟
/ / 1
/ / ^ ^
长 = 0 ;
如果 (graph.getEdgeCount()> 20000 ){
时间=(长)(((双)graph.getEdgeCount()/ 80 ));
/ /(“日志:黄正:”+ DateUtil.time2str((int)的System.currentTimeMillis的(),“YYYY-MM-DD HH:MM:SS”)+“当前<STRONG>生成</ >图像所花费的时间:“+时间);
其他
(graph.getEdgeCount()> 12000 ){
时间=(长)(((双)graph.getEdgeCount()/ 85 ));
/ /(“日志:黄正:”+ DateUtil.time2str((int)的System.currentTimeMillis的(),“YYYY-MM-DD HH:MM:SS”)+“当前<STRONG>生成</ >图像所花费的时间:“+时间);
否则 ,如果 (graph.getEdgeCount()> 8000 ){
时间=(长)(((双)graph.getEdgeCount()/ 90 ));
/ /(“日志:黄正:”+ DateUtil.time2str((int)的System.currentTimeMillis的(),“YYYY-MM-DD HH:MM:SS”)+“当前<STRONG>生成</ >图像所花费的时间:“+时间);
其他 (graph.getEdgeCount()> 5000 ){
时间=(长)(((双)graph.getEdgeCount()/ 95 ));
/ /(“日志:黄正:”+ DateUtil.time2str((int)的System.currentTimeMillis的(),“YYYY-MM-DD HH:MM:SS”)+“当前<STRONG>生成</ >图像所花费的时间:“+时间);
否则 ,如果 (graph.getEdgeCount()> 100 ){
时间=(长)(((双)graph.getEdgeCount()/ 100 ));
/ /(“日志:黄正:”+ DateUtil.time2str((int)的System.currentTimeMillis的(),“YYYY-MM-DD HH:MM:SS”)+“当前<STRONG>生成</ >图像所花费的时间:“+时间);
其他 {
时间= 1 ;
}
自动版式自动版式= 新的 自动版式(时间,TimeUnit.SECONDS);
autoLayout.setGraphModel(而GraphModel);
YifanHuLayout secondLayout = 新 YifanHuLayout(空,新StepDisplacement(3420));
ForceAtlasLayout firstLayout =:新 ForceAtlasLayout(空);
AutoLayout.DynamicProperty adjustBySizeProperty = AutoLayout.createDynamicProperty(的“forceAtlas.adjustSizes.name” ,Boolean.TRUE,0 .1 F); / /真后,10%的布局时间
AutoLayout.DynamicProperty repulsionProperty = AutoLayout.createDynamicProperty(的“forceAtlas.repulsionStrength.name” ,新的双(500 ),0F); / / 500的完整周期
autoLayout.addLayout(firstLayout,0 .5楼新 AutoLayout.DynamicProperty [] {adjustBySizeProperty,repulsionProperty});
autoLayout.addLayout(secondLayout,0 .5 F);
autoLayout.execute();
/ / ^ ^
/ /导出
ExportController EC = Lookup.getDefault()。查找(ExportController.类);
尝试 {
ec.exportFile(新的 文件(“WebRoot/WEB-INF/weiboGexf/io_gexf2.gexf” ));
} 渔获 (IOException异常前){
ex.printStackTrace();
}
}
公共 静态 无效的 主要(字串[] args){
WithAutoLayout的autoLayout =的新 WithAutoLayout();
autoLayout.script();
/ /的System.out.println();
}
}
作者:马修Bastian <mathieu.bastian@gephi.org>的
网址:http://www.gephi.org的
此文件属于Gephi。
Gephi是自由软件:您可以重新分配和/或修改
根据GNU Affero通用公共许可证的条款
自由软件基金会,无论是第3版的出版
许可证,或(在你的选项)任何更新的版本。
Gephi分布在希望,这将是有用的,
但没有任何担保,甚至没有隐含的担保
适销性或针对特定用途的适用性。请参阅
GNU Affero通用公共许可证的更多细节。
您应该已经收到GNU Affero通用公共许可证的副本
随着Gephi。如果没有看到<http://www.gnu.org/licenses/>。
* /
包org.gephi.toolkit.demos;
进口的java.io.File;
进口java.io.IOException异常;
导入java.util.concurrent.TimeUnit;
进口org.gephi.graph.api.DirectedGraph;
进口org.gephi.graph.api.GraphController;
导入org.gephi.graph.api.GraphModel;
进口org.gephi.io.exporter.api.ExportController;
进口org.gephi.io.importer.api.Container;
导入org.gephi.io.importer.api.EdgeDefault;
进口org.gephi.io.importer.api.ImportController;
导入org.gephi.io.processor.plugin.DefaultProcessor;
导入org.gephi.layout.plugin.AutoLayout;
导入org.gephi.layout.plugin.force.StepDisplacement;
导入org.gephi.layout.plugin.force.yifanHu.YifanHuLayout;
导入org.gephi.layout.plugin.forceAtlas.ForceAtlasLayout;
进口org.gephi.project.api.ProjectController;
导入org.gephi.project.api.Workspace;
导入org.openide.util.Lookup;
/ **
*本演示展示了如何使用的<code>自动版式</ code>类运行布局
*编程。
* <P>
*您可以设置一个的布局持续时间,比几个布局和执行。为
*比如你设置0.8为胡一帆算法和0.2标签调整。如果
*执行时间为100秒,则80秒的第一算法运行和
*秒20秒。它还允许动态改变属性值
*(按一定比例或内插,如果值是数值)。
*
* @作者马修巴斯蒂安
* /
公共 类 WithAutoLayout {
公共 无效 脚本(){
/ /初始化一个项目 - 工作区
/ /һĿ - һ
ProjectController PC = Lookup.getDefault()。查找(ProjectController.类);
pc.newProject();
工作区工作区= pc.getCurrentWorkspace();
/ /附加容器图形结构
/ /图像νṹ
ImportController importController = Lookup.getDefault()。查找(ImportController. 类);
/ /导入文件
/ / L
集装箱容器;
尝试 {
档案文件
容器:= importController.importFile(文件);
container.getLoader()。setEdgeDefault(EdgeDefault.DIRECTED); / /力
(container.setAllowAutoNode ; / /不要创建缺少的节点
} 赶上 (例外){
ex.printStackTrace();
返回;
}
importController.process(容器,的新 DefaultProcessor(),工作区);
/ /查看图以及进口
/ /ͼ
而GraphModel而GraphModel = Lookup.getDefault()。查找(GraphController. 类)。getModel();
的DirectedGraph图= graphModel.getDirectedGraph();
( I = 1 ; <= graph.getNodeCount(); + +){
/ /(“节点:”+ graph.getNode(I)。getNodeData());
}
(“边缘:” + graph.getEdgeCount());
/ /布局1分钟
/ / 1
/ / ^ ^
长 = 0 ;
如果 (graph.getEdgeCount()> 20000 ){
时间=(长)(((双)graph.getEdgeCount()/ 80 ));
/ /(“日志:黄正:”+ DateUtil.time2str((int)的System.currentTimeMillis的(),“YYYY-MM-DD HH:MM:SS”)+“当前<STRONG>生成</ >图像所花费的时间:“+时间);
其他
(graph.getEdgeCount()> 12000 ){
时间=(长)(((双)graph.getEdgeCount()/ 85 ));
/ /(“日志:黄正:”+ DateUtil.time2str((int)的System.currentTimeMillis的(),“YYYY-MM-DD HH:MM:SS”)+“当前<STRONG>生成</ >图像所花费的时间:“+时间);
否则 ,如果 (graph.getEdgeCount()> 8000 ){
时间=(长)(((双)graph.getEdgeCount()/ 90 ));
/ /(“日志:黄正:”+ DateUtil.time2str((int)的System.currentTimeMillis的(),“YYYY-MM-DD HH:MM:SS”)+“当前<STRONG>生成</ >图像所花费的时间:“+时间);
其他 (graph.getEdgeCount()> 5000 ){
时间=(长)(((双)graph.getEdgeCount()/ 95 ));
/ /(“日志:黄正:”+ DateUtil.time2str((int)的System.currentTimeMillis的(),“YYYY-MM-DD HH:MM:SS”)+“当前<STRONG>生成</ >图像所花费的时间:“+时间);
否则 ,如果 (graph.getEdgeCount()> 100 ){
时间=(长)(((双)graph.getEdgeCount()/ 100 ));
/ /(“日志:黄正:”+ DateUtil.time2str((int)的System.currentTimeMillis的(),“YYYY-MM-DD HH:MM:SS”)+“当前<STRONG>生成</ >图像所花费的时间:“+时间);
其他 {
时间= 1 ;
}
自动版式自动版式= 新的 自动版式(时间,TimeUnit.SECONDS);
autoLayout.setGraphModel(而GraphModel);
YifanHuLayout secondLayout = 新 YifanHuLayout(空,新StepDisplacement(3420));
ForceAtlasLayout firstLayout =:新 ForceAtlasLayout(空);
AutoLayout.DynamicProperty adjustBySizeProperty = AutoLayout.createDynamicProperty(的“forceAtlas.adjustSizes.name” ,Boolean.TRUE,0 .1 F); / /真后,10%的布局时间
AutoLayout.DynamicProperty repulsionProperty = AutoLayout.createDynamicProperty(的“forceAtlas.repulsionStrength.name” ,新的双(500 ),0F); / / 500的完整周期
autoLayout.addLayout(firstLayout,0 .5楼新 AutoLayout.DynamicProperty [] {adjustBySizeProperty,repulsionProperty});
autoLayout.addLayout(secondLayout,0 .5 F);
autoLayout.execute();
/ / ^ ^
/ /导出
ExportController EC = Lookup.getDefault()。查找(ExportController.类);
尝试 {
ec.exportFile(新的 文件(“WebRoot/WEB-INF/weiboGexf/io_gexf2.gexf” ));
} 渔获 (IOException异常前){
ex.printStackTrace();
}
}
公共 静态 无效的 主要(字串[] args){
WithAutoLayout的autoLayout =的新 WithAutoLayout();
autoLayout.script();
/ /的System.out.println();
}
}
追问
别复制粘贴。
我知道gephi可以打开完成转换,但是我要批量的自动化进行。你有什么办法么》?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询