日记–gephi+sigma—+kegg实现网络图数据模型的展示&gephi报错cannot find java1.8 or heigher

  • Post author:
  • Post category:java

git pull ** --allow-unrelated-histories

Gephi

Gephi是网络数据结构可视化工具,可以结合mooc里的课程学习
20世纪最重要的元科学是进化论,网络科学是21世纪的进化论,人类意识到自己是承载基因的载体,结构,涌现,分形,尺度被重视,从亚里士多德逻辑学进化到了多值逻辑,从频率主义到贝叶斯主义,从发现物理法则到了推演理论模型
Gephi致力于网络科学(分析关系数据,处理大规模网络数据集,如GEFX,GraphML,GML等,还支持主流网络科学算法–可以在节点层分析统计网络属性,也可以使用不同的布局算法对网络进行可视化处理,模拟分析动态网络,借助插件可以进行更多可视化分析),正如SPSS致力于社会科学(提供回归分析,方差检验等统计模型)

sigma.js可以在web上展示交互式网络结构,使用gephi的插件可以导出sigma.js可以识别的格式

先安装gephi软件之后安装集成sigma.js的插件,之后导出得到了一个network文件夹

打开报错:cannot find java1.8 or heigher

进入gephi的etc目录打开gephi.config文件,配置Javahome本地路径
在这里插入图片描述

https://blog.csdn.net/weixin_44447680/article/details/89842786

介绍

Gephi用图论的术语描述数据,
基本术语–节点与边的数量,有向图和无向图,边有权重还是无权重,是否多图等
基本的计算–节点的度,图的平均度,图密度,图的直径与半径,图的连通度,平均路径长度等
统计与分析–
第一种:节点的介数中心度,亲密中心度,离心度,pagerank,特征向量中心度,节点与网络的平均聚类系数,图的连通分量及模块化划分
第二种:通过不同方式的布局,对图进行可视化处理,之后通过对图的解读与分析
第三种:通过对生长网络的动态模拟进行解读与分析

插件

https://marketplace.gephi.org/
下载的文件是一个以nbm为后缀的gephi插件文件
比如需要HTTP浏览网站的分析,需要下载HTTPGraph插件
不想使用Gephi默认实现的FastUnfolding算法,需要使用著名的GN算法实现节点划分,可以下载Girvan Newman Clustering插件
Gephi是基于Java实现的,可以自己开发实现一些特殊功能的插件

使用

gephi打开时有样例–Les Miserables.gexf

在这里插入图片描述
Gephi用的理论知识实际上是网络科学,网络科学致力于研究节点node和边edge组成的网络

布局可以不依赖统计的值单独运行,根据多种统计算法为节点或边计算出不同的值
外观可以定义节点与边和他们的标签的大小颜色
滤波可以据筛选条件禁止一部分节点展示,比如禁止一些没有出入度的点
可以锁定一个节点节点就不再参与自动布局

步骤

【新建一个图】
【数据导入】
以csv文件为例,一个节点文件一个边文件
之后分别导入节点文件和边文件
导入第二个文件的时候选择添加到现有的工作空间
【布局】
gephi提供多种布局方式,一般圆形网络图使用fruchterman (窗口–布局)reingold布局格式,点击运行,布局稳定之后点击停止,生产圆形的网络布局
【网络拓扑参数计算】
(窗口–统计)运行,关闭
【节点设定】
窗口–外观–节点(设置一下大小和数值,渲染方式是度,设置节点大小的最大尺寸和最小尺寸,应用)
边设置,窗口-外观-边,ranking选择度
【预览修饰】
点击预览,在预览设置里可以改边框宽度,显示节点标签,缩短标签防止标签互相覆盖,厚度可以改边线厚度,选上重新调整权重可以根据边线权重显示不同的厚度
【图像导出】
支持svg,png,pdf,gexf图文件等

一个颜色的节点是同一个门,节点大小是连接度
边,蓝色是负相关,红色是正相关,粗细是相关系数的绝对值大小

导出的矢量图可以使用ai等图形编辑软件进一步修改,图形文件也可以使用脚本处理,可以个性化的增加图例,图文件也是一个标签语言

数据处理

【图形的存储】
gephi的专有图形文件格式是.gephi,但是不是明文存储,.gexf是明文存储的图形格式,可以看一个.gexf的实例

<?xml version="1.0" encoding="UTF-8"?>
<gexf xmlns="http://www.gexf.net/1.3" version="1.3" xmlns:viz="http://www.gexf.net/1.3/viz" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.gexf.net/1.3 http://www.gexf.net/1.3/gexf.xsd">
  <meta lastmodifieddate="2018-05-30">
    <creator>Gephi 0.9</creator>
    <description></description>
  </meta>
  <graph defaultedgetype="directed" mode="static">
    <nodes>
      <node id="0" label="Hello">
        <viz:size value="10.0"></viz:size>
        <viz:position x="-157.09903" y="-64.66471"></viz:position>
        <viz:color r="251" g="9" b="9"></viz:color>
      </node>
      <node id="1" label="World">
        <viz:size value="10.0"></viz:size>
        <viz:position x="157.09904" y="64.66471"></viz:position>
        <viz:color r="10" g="194" b="245"></viz:color>
      </node>
    </nodes>
    <edges>
      <edge id="0" source="0" target="1">
        <viz:color r="0" g="109" b="44"></viz:color>
      </edge>
    </edges>
  </graph>
</gexf>

gexf是描述复杂网络的语言,包括复杂网络的结构和数据,生成gexf需要用布局算法,
比如Force-directed_graph_drawing 力导向算法,算法核心是模拟节点之间的吃力和拉力,多次迭代之后维持稳定状态
一般使用gephi-tookie组件提供的api处理数据,需要先在maven项目里加入gephi的仓库和依赖
【数据资料界面】
不显示图形文件里所有的数据
在这里插入图片描述
可以看到节点数据里只有id,标签,间隔和模块度(因为布局模式是fruchterman reingold才显示的)
timeset列是节点的动态数据属性,可以理解为节点的生命时期

模块度(模块化度量值)–是一个衡量网络里社区稳定度的方法,Q=∑(I/E-((2I+O)/2E)**2),I表示两个端点均在同一社区中的边的数目,O表示其中一个端点在社区中,而另一个端点不在社区中的边的数目,将3个社区中的Q值计算出来以后相加,就得到我们需要的值

在这里插入图片描述
边数据里只有源,目标,权重等
可以自己添加几个试试
一般使用csv文件导入数据
同样任何的gephi图形都可以以csv格式导出成一个节点和边的文件
(只是保存元数据,样式什么的还是只有.gephi和.gexf文件才能保存)
可以使用节点数据
可以导入表格(有些应用无法正确识别编码标准,所以声明数据格式utf-8很必要),也可以导入本地数据库数据
在这里插入图片描述

一个以上的表格导入,不用新建工作区
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
一般节点的数据字段可以有很多,导出时不需要的可以不勾选
大量数据时渲染要有耐心
在这里插入图片描述
【随机图生成】
可以先生成一定的节点,之后以一定的概率决定两个节点之间是否有边,可以观察随机图的一些特效或者生成图做练习,文件–生成–随机图
定义一下节点数量,连线概率即可,随机图都是有向图
【动态数据】
文件–生成–动态图示例,可以生成一个有50个节点的动态图,并且显示一个未启动的时间线窗体,窗体用于查看运动的动态图
对动态效果起作用的是timestamp列,比如节点n1里的是<[2000,2001,2001,3000]>
gephi用不同节点和边的生命段构造动态的元素

外观

一般是根据数值设定颜色和大小

sigma的使用

提供webGI和canvas渲染器以及鼠标键盘的支持

可以重新进入图片修改节点之类的修改画布尺寸等
可以自定义渲染节点和边的方式
是一个渲染引擎可以添加监听事件,渲染方式,数据修改,移动摄像机等交互方式

数据文件里是json格式,nodes里一个字典列表,每个字典里有id,标签,x,y轴的位置和尺寸,edges里是id,点1id和点2id

html文件里:

<div id="container"></div>
<script src="sigma.min.js"></script>
<script src="sigma.parsers.json.min.js"></script>
<script>
  sigma.parsers.json('data.json', {
    container: 'container',
    settings: {
      defaultNodeColor: '#ec5148'
    }
  });
</script>

打开json文件使用,打开gexf文件使用sigma.parsers.gexf
依赖

<script src="path/to/sigma.parsers.gexf.min.js"></script>

<script src="path/to/sigma.parsers.min.gexf.js"></script>
 sigma.parsers.gexf(
    'path/to/les-miserables.gexf',
    {
      container: 'sigma-container'
    },
    function(s) {

    }
  );
<script src="./network/js/sigma/sigma.min.js" type="text/javascript"
	language="javascript"></script>

<script src="./network/js/sigma/sigma.parseJson.js"
	type="text/javascript" language="javascript"></script>
<script src="./network/js/fancybox/jquery.fancybox.pack.js"
	type="text/javascript" language="javascript"></script>

<script src="./network/js/main.js" type="text/javascript"
	language="javascript"></script>

<link rel="stylesheet" type="text/css"
	href="./network/js/fancybox/jquery.fancybox.css" />
<link rel="stylesheet" href="./css/h-index.css" type="text/css"
	media="screen" />
<link rel="stylesheet" media="screen and (max-height: 770px)"
	href="./network/css/tablet.css" />

ga和gaq.push
可以用于跟踪google的分析事件

jQuery(document).ready(function () {
    if (jQuery.cookie('entry_winagrand_cookie') !== null) { //cookie正确的情况
        jQuery('notregisterbtn').on('click', function () { //捕捉按钮的点击事件
            _gaq.push(['_trackEvent', 'QR_Win_A_Grand', 'Clicked through to Register']);  //跟踪事件,注册点击事件
        });
    }
});
jQuery(document).ready(function () {
     if (jQuery.cookie('entry_winagrand_cookie') !== null) {
         jQuery('notregisterbtn').on('click', function () {
             ga('send', 'event', 'button', 'click', 'QR_Win_A_Grand', 'Clicked_through_to_register');//跟踪发送,按钮,点击,注册事件
         });
     }
});
</script>
    jQuery(document).ready(function () {
        if (jQuery.cookie('entry_winagrand_cookie') !== null) {
            jQuery('notregisterbtn').on('click', function () {
                //you should first check if ga is set
                if (typeof ga !== 'undefined') {
                    ga('send', 'event', 'QR_Win_A_Grand', 'Clicked_through_to_register');
                 }
                //check if _gaq is set too
                if (typeof _gaq !== 'undefined') {
                    _gaq.push(['_trackEvent', 'QR_Win_A_Grand', 'Clicked through to Register']);
                }
             });
        }
    });
function TrackEventGA(Category, Action, Label, Value) {
    "use strict";
    if (typeof (_gaq) !== "undefined") {
        _gaq.push(['_trackEvent', Category, Action, Label, Value]);
    } else if (typeof (ga) !== "undefined") {
        ga('send', 'event', Category, Action, Label, Value);
    }
}
TrackEventGA('QR_Win_A_Grand', 'Clicked_through_to_register');

版权声明:本文为weixin_46045444原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。