一、历史 | 为什么要可视化?
数学中有一门古老的学科叫做图论,专门研究各种不同的图的性质,最早可以追溯到欧拉的七桥问题,如图一所示,话说在欧洲哥尼斯堡(今加里宁格勒)这个地方,有一条河,河中有两个小岛(A和D),这两个岛通过7座桥和两岸相连接,人们每天晚上吃好晚饭之后都会在岛上岸边散步,这时有爱思考的人就提出了一个问题:有没有可能在不重复经过任意一座桥的情况下,走遍这所有的7座岛?
我们当然可以一遍一遍的尝试,得到最后的结果,但是这样实在是太慢,人们问有没有什么诀窍呢?或者说有没有什么一般规律可以解决诸如此类的问题?
1735年,大数学家Euler
应邀来到此地尝试解决此问题,一年以后,29岁的Euler
以一篇论文《哥尼斯堡的七座桥》论文宣布解决了此类问题,如今我们称这一类问题为“一笔画”问题,欧给出了对于此类能够不重复的走完所有路线(即一笔画完不间断)的问题的充要条件。
欧拉的解答开辟了图论与几何拓扑等重要数学分支,其重要性不言而喻,但是我们这里着重于他解决该问题的一个重要的思维转变,即为了简化此问题,欧拉将该问题转化为如下的数学模型:他将两岸B与C、两岛A与D抽象为节点(node
),将连接岸和岛的桥视作为比边(edge
),从而得到如下的数学模型:
这图片是我用inkscape
画的示意图,由此一来问题就变为:在最多经过每一条边一次的的情况下,是否可能遍历图中所有的节点。
Euler
对于实际问题的简化其实就是建立数学模型的一个过程,本质上和我们今天参加数学建模大赛时进行建模的过程是一样的。从此,对图,即节点和连边组成的对象的研究就蓬勃发展起来了。
一直以来人们都认为图论是一门高度抽象化的数学分支,其实际意义不是很大,转机出现在上世纪的90年代,这个时候,基于对一些特殊的图,例如规则图(Regular Graph
)、随机图(Random Graph
)的研究、以及罗马尼亚裔的匈牙利美国物理学家巴拉巴西(Albert-LászlóBarabási
)对万维网进行研究之后,发现了所谓的无标度(Scale free Network
)网络,物理学家发现现实生活中的很多现象和结构,可以在网络(network
)的层面上进行理解,而网络在本质上就是图的演化,如此一来,我们就可以构建出抽象的网络来模拟实际的网络,如交通网络、电力网络、神经网络、流行病网络、甚至全球气候网络。由此以来便发展出了复杂网络这门交叉型的学科,复杂网络发展非常迅猛,科学家对各种网络在各种层面上进行研究,这样一来就带来一个问题,如何能够快速理解建模之后得到的网络?一个方式就是可视化,俗话说一语胜千言,图像能够表达的信息较之文字会形象许多,在这个背景下,Gephi
这个网络可视化软件就诞生了。
Gephi
软件的宗旨,用开发者的话说,就是Exploring dynamic networks in an easy and intuitive way has been incorporated in Gephi from the beginging.
以一种简单且直观的方式来呈现动力学网络是Gephi
一开始就追求的目标。Gephi
可处理20000+节点的大型网络,在这个基础上,还能依据不同的研究者的追求调用不同的高质量分层算法、进行数据清洗、聚类、统计以及注释,接下来我们就开始学习这个软件的使用。
二、Gephi
软件安装
gephi
是一个免费的大型的复杂网络可视化的软件,由Bastian M
等人编写,并一直在更新,目前最新的版本是Gephi 0.9.2
,其官网网址是:官方网站,值得一提的是,该软件在mac
和linux
上也有相应的版本,读者可各取所需进行下载。
如图所示,我们首先点击进入官网,然后点击按钮Download Free
进行免费下载,软件大约有72M的大小,一般情况下下载都较快,如果觉得下载速度太慢可以打开迅雷复制下载网址进行下载。
下载之后,按理说就可以进行正常的双击exe
安装的步骤了,但其实这软件有一个要求,它必须在java
1.8版本以上才能正常运行,否则在安装之后,会出现如下窗口:
导致无法运行该软件,网上有修改conf
文件的做法,但是我觉得比较麻烦,直接安装相应的版本就好了,若各位嫌麻烦,我这里也附上一个下载链接,下载完默认安装即可。装好java 1.8
以后再安装gephi
软件,就没什么问题啦!
链接:https://pan.baidu.com/s/1haUM4Xgv3_P599mIkd6rag
提取码:mj0h
复制这段内容后打开百度网盘手机App,操作更方便哦
三、界面介绍
安装完毕之后,双击图标打开gephi
,进入上图所示的界面,简单来说,概览窗口是你进行网络可视化并后期调整的主要窗口;数据资料是你导入的电子表格资料;预览窗口就是你可视化之后导出图片之前的预览窗口。
四、通过例子来学习可视化
接下来我们直接举一个例子来说明如何操作Gephi
软件作出你的第一张图:
首先我脑子里有一个想法,例如说我想可视化一个一维的链式网络,且首尾相连,我们假设有个节点,每个节点和下一个节点相连,即网络的连边数为,那么就需要这两组数据:
一个表格用来指出节点的。
一个表格用来指出节点和节点之间的。
如下图所示
左边的node
表格的是节点信息表格,就两列,分别是Id
和Label
列,这两列分别代表了节点的数量和编号,一共是10个节点,编号是从1到10;右边的link
表格是连边信息表格,一共三列,分别是Source
和Target
和Weight
列,也很好理解,Source
指的就是一条边的出发节点(源节点),Target
指的就是一条边的到达节点(汇节点),Weight
就是这条边的权重,一般设为1,举个例子,第5行中,Source = 4,Target = 5, Weight = 1
代表该边从节点4出发,指向节点5,权重为1,注意是出发节点指向目标节点。
准备好表格之后就可以开始画图了!我们关闭数据表格,打开gephi
,点击导入数据表格,由于表格有两个,所以数据也要导入两次:
先导入节点node
的数据,这里注意:
再导入link
的数据:
按照数字所示的步骤来就可以了,添加完以后便可以在workspace
中看到图像啦!
这个时候图像还不够好看,我们在左边的布局选项卡中选择YifanHu
布局,点击运行,便可以得到上述的图像,然后再点击下方选项卡中的显示标签T
,调整大小至不超出节点即可,这样一来你的图像就完成啦!最后点击上方的预览窗口,开始准备导出工作。
五、导出图像
如下图所示,点击预览窗口后,先点击刷新,发现出来的图像和我们WorkSpace
中给的图像并不一致?!没关系~,我们依次调整左边选项卡中的数据,大部分选项一眼能看明白,可自行调节,实在不行就按照我标记的数字来调整,调整完以后点击一下刷新(4),满意后点击左下方的图片格式导出(5)即可!共有三种格式可以选择,一般建议选择SVG
进一步做调整或者直接导出PDF
文档,而PNG
格式实测存在图像失真的现象。
上面就是作图以后的最终结果,是不是挺直观的?如果不满意颜色等性质,可以自行摸索调节,也不是很难。
以上就是采用Gephi
作图的一个基本操作啦,最主要的还是表格的编制,其实可视化也不是很难,软件开发者的目标就是让我们不管是专家还是新手都能直接用鼠标进行点击操作,Gephi is developed toward supporting the whole process with only user interface manipulation
,因此我们可以尽管尝试,不用担心失败,大不了重新导入作图就是了。