本案例对欧洲各国之间的信件来往构建了网络,对网络进行了中心度分析和社区发现分析,通过社区发现分析找到信件来往主体所归属的社区,并将该网络映射到欧洲地图上,制作出了非常好的渲染结果。注意:需要使用Gephi在本地进行操作,无法直接在案例中进行运行,请下载Gephi软件进行本案例的复现,节点和边的数据请在下方的数据集模块进行下载。 主要分析过程如下:

1 插件准备

2 数据集介绍

3 导入数据

4 网络图渲染

5 社区发现

6 使用节点中心度进行渲染

7 地理布局

8 社区发现结果与地理位置比较

本案例主要介绍如何使用Gephi进行社区发现,以及如何将整个网络图结合地图进行展示。本案例需要使用到需另外安装的三个插件:GeoLayout,NoverlapLayoutMultimode Networks Transformation以及开源的矢量绘图软件 Inkscape(这个软件非常难用,可以选择跳过与该工具相关的步骤,不影响社区网络分析)。

1 插件准备

工具菜单中选择插件

点击更新,先将已经安装好的插件更新为最新版本。

待插件更新完毕后,在插件列表中依次找到GeoLayout,NoverlapLayoutMultimode Networks Transformation三个插件进行安装(在安装之后需要重启Gephi才能够在已安装插件中找到所安装的插件)。

2 数据集

数据集共1000个节点,14116条有向边(A向B寄信),并包含多个特征,用于不同的分析。Id唯一标识了每个节点,Label为节点标签,Attribute表示性别(1表示男性,2表示女性),City为所在城市,LatitudeLongitude分别表示纬度和经度信息,这是我们之后在地图上进行可视化的依据。

3 导入数据

打开Gephi,新建项目,点击文件菜单中的import spreadsheet,然后输入电子表格(节点的数据 Nodes.csv 和边的数据 Edges.csv ),并设置每个特征的数据类型。指定节点表格或者边表格,并使得LatitudeLongitudeDouble类型。 先导入节点数据:

然后导入边的数据:

4 网络图渲染

调整节点大小

刚导入数据时,在概览窗口,初始的节点随机均匀分布在空间。下面我们调节节点大小:使得节点大小与节点的度成正比。设置好以后,点击运用执行设置:

调节节点空间分布

我们在左下角布局窗口,调整节点的空间分布,首先尝试 Fruchterman Reingold 布局方法:

再尝试 Force Atlas2

渲染以及中心度测量

在我们数据中,边具有权重1、2、3,进入数据资料窗口,可以看到Weight列记录了每一条表的权重信息。在统计窗口中计算每个节点的加权度,并统计平均加权度:

计算完每个节点的加权度后,在ranking面板就会新增weighted in-degreeweighted out-degree属性。在这里我们根据节点的加权入度大小(weighted in-degree)对节点颜色进行渲染,渲染方式为用较暗的颜色填充值小的节点,用明亮的颜色填充值大的节点。

结果如下图所示:

从图中可以看出加权入度与度中心度之间的差别,如图中红色圈中的深色节点所示,该结点加权入度较高,但是其度中心度较小,这表明该节点所代表的人收件较多,但是不经常发信件给别人,我们猜测这位可能是一个政府官员。

节点标签

我们选择Label对节点进行标记。在图窗口的下方有一个很小的按钮,点击该按钮将节点、边、标记或全局设置的界面打开。选则Labels面板对标记进行调整,勾选节点表示在节点上添加标记。

我们还可以根据weighted in-degree对节点标签大小进行调节,使得标签大小与weighted in-degree值成正比。

预览

渲染好之后我们可以在预览窗口对图形做最后的微调。与之前在概览窗口的操作不同,在预览窗口中的所有操作都是“可逆的”,并不会影响概览窗口中的网络图结构。

下图给出了显示标签以及透明度为70%的预览方式,这是为了让节点突出。设置好之后,点击刷新执行设置,并在预览窗口中看到最终的效果。作为图与社交网络可视化惯例,我们使用弯曲边来显示边的方向,源节点到目标节点始终为顺时针转动。非弯曲边缘通常是非定向图。

预览设置的底部有一个输出按钮。请注意,以.png导出的图形具有较差的分辨率。所以一般选择.svg或.pdf,其优点是可以通过自己的图像/绘图软件进行修改(这里建议使用开源程序 inkscape 来后续操作.svg文件)。

5 社区发现

Gephi内置了Fast Unfolding算法进行社区发现。点击统计面板中的模块度旁的运行,选择分辨率在0.1-2之间,值越大,得到的社区中的成员越多,社区数也越小,这里我们设置为0.5。

运行完之后,在节点的颜色设置中将会新增Modularity Class属性,我们使用此属性来渲染节点颜色,结果如下图:

预览中查看结果:

6 使用介数中心度对节点颜色进行渲染

介数中心度测量网络中每对节点之间的所有最短路径,然后计算节点在两个其他节点之间的最短路径上的次数。 在发送和接收信件网络的情况下,这是一个非常有趣的可视化手段,因为它允许研究人员检测在两个其他人或群体之间占据中间位置的人。在统计中,单击网络直径

像之前的加权度一样,找到一个好看的方式来突出显示具有高中心度的节点。同样,具有较高的度/加权度的节点并不总是具有很高的介数中心度。

最后使用Betweenness Centrality介数中心度对节点的颜色进行渲染。

预览结果如下:

7 地理布局

在数据集中存在每一节点的经纬度信息,我们可以依据这个信息在将节点绘制在地图的相应地理位置上。首先,我们应用 Geo Layout 布局,使用十六世纪地理学家Mercator绘制的投影地图来布局(因为之后我们使用的欧洲地图背景是使用的此类地图,更多国家和各大洲的SVG地图可以通过SVG MAPS 网站进行下载)。点击运行执行布局操作,结果如下图所示:

我们发现许多节点重合在了一起,接下来我们应用noverlap布局使得节点不会互相重叠(注意每个应用这个布局都可能产生不一样的布局结果,但最初重叠在一块的节点都会挨在一起):

最后,在预览窗口,检查及微调最后的网络展示细节,并将最终的欧洲信件网络图导出为 .svg 格式的文件比如 network_betweenness.svg

在 Inkscape 中依次导入两个svg图,然后调整到一致的大小,再将城市图层移到最前以看清楚城市的文字,最终得到的结果如下图:

最后我们将 network_betweenness.svg 与 欧洲地图文件 Mapbase.svg 合并在一起,这里需要用到Inscape,软件的下载和使用详见Inscape官网

欧洲地图背景如下图所示:

9 社区发现结果与地理位置的比较

在应用Geo Layout之后,我们可以选择使用network_betweenness来渲染节点的大小(最小尺寸为25,最大尺寸为120),使用Modularity Class来渲染节点的颜色。得到的结果如下:

并将其导出为 network_modularity.svg。然后将两个svg文件通过 Inkscape 合并在一起,得到如下结果:

从最终的图中我们可以看到,社区基本上能够跟地理区域对应上,但是也存在某一社区A所在某一地区内存在另一社区B的成员,那么我们可以猜测这个成员是该地区的外来人员,他/她的亲属网络在社区B内,所以他/她的信件来往与社区B内的成员来往频繁,故而属于社区B。

Copyright © 2017 Sid Ian@Boya, xiaodongy@boyabigdata.cn. All Rights Reserved.