本案例对欧洲各国之间的信件来往构建了网络,对网络进行了中心度分析和社区发现分析,通过社区发现分析找到信件来往主体所归属的社区,并将该网络映射到欧洲地图上,制作出了非常好的渲染结果。注意:需要使用Gephi在本地进行操作,无法直接在案例中进行运行,请下载Gephi软件进行本案例的复现,节点和边的数据请在下方的数据集模块进行下载。 主要分析过程如下:
1 插件准备
2 数据集介绍
3 导入数据
4 网络图渲染
5 社区发现
6 使用节点中心度进行渲染
7 地理布局
8 社区发现结果与地理位置比较
本案例主要介绍如何使用Gephi进行社区发现,以及如何将整个网络图结合地图进行展示。本案例需要使用到需另外安装的三个插件:GeoLayout
,NoverlapLayout
和Multimode Networks Transformation
以及开源的矢量绘图软件 Inkscape(这个软件非常难用,可以选择跳过与该工具相关的步骤,不影响社区网络分析)。
在工具
菜单中选择插件
:
点击更新
,先将已经安装好的插件更新为最新版本。
待插件更新完毕后,在插件列表中依次找到GeoLayout
,NoverlapLayout
和Multimode Networks Transformation
三个插件进行安装(在安装之后需要重启Gephi才能够在已安装插件中找到所安装的插件)。
数据集共1000个节点,14116条有向边(A向B寄信),并包含多个特征,用于不同的分析。Id
唯一标识了每个节点,Label
为节点标签,Attribute
表示性别(1表示男性,2表示女性),City
为所在城市,Latitude
和Longitude
分别表示纬度和经度信息,这是我们之后在地图上进行可视化的依据。
打开Gephi,新建项目
,点击文件
菜单中的import spreadsheet
,然后输入电子表格(节点的数据 Nodes.csv 和边的数据 Edges.csv ),并设置每个特征的数据类型。指定节点表格或者边表格,并使得Latitude
和Longitude
为Double
类型。
先导入节点数据:
然后导入边的数据:
计算完每个节点的加权度后,在ranking
面板就会新增weighted in-degree
和weighted out-degree
属性。在这里我们根据节点的加权入度大小(weighted in-degree
)对节点颜色进行渲染,渲染方式为用较暗的颜色填充值小的节点,用明亮的颜色填充值大的节点。
结果如下图所示:
从图中可以看出加权入度与度中心度之间的差别,如图中红色圈中的深色节点所示,该结点加权入度较高,但是其度中心度较小,这表明该节点所代表的人收件较多,但是不经常发信件给别人,我们猜测这位可能是一个政府官员。
我们还可以根据weighted in-degree
对节点标签大小进行调节,使得标签大小与weighted in-degree
值成正比。
渲染好之后我们可以在预览
窗口对图形做最后的微调。与之前在概览
窗口的操作不同,在预览
窗口中的所有操作都是“可逆的”,并不会影响概览
窗口中的网络图结构。
下图给出了显示标签
以及透明度
为70%的预览方式,这是为了让节点突出。设置好之后,点击刷新
执行设置,并在预览
窗口中看到最终的效果。作为图与社交网络可视化惯例,我们使用弯曲边来显示边的方向,源节点到目标节点始终为顺时针转动。非弯曲边缘通常是非定向图。
在预览设置
的底部有一个输出按钮。请注意,以.png导出的图形具有较差的分辨率。所以一般选择.svg或.pdf,其优点是可以通过自己的图像/绘图软件进行修改(这里建议使用开源程序 inkscape 来后续操作.svg文件)。
Gephi内置了Fast Unfolding算法进行社区发现。点击统计
面板中的模块度
旁的运行
,选择分辨率在0.1-2之间,值越大,得到的社区中的成员越多,社区数也越小,这里我们设置为0.5。
运行完之后,在节点的颜色设置中将会新增Modularity Class
属性,我们使用此属性来渲染节点颜色,结果如下图:
在预览
中查看结果:
介数中心度测量网络中每对节点之间的所有最短路径,然后计算节点在两个其他节点之间的最短路径上的次数。 在发送和接收信件网络的情况下,这是一个非常有趣的可视化手段,因为它允许研究人员检测在两个其他人或群体之间占据中间位置的人。在统计
中,单击网络直径
。
像之前的加权度一样,找到一个好看的方式来突出显示具有高中心度的节点。同样,具有较高的度/加权度的节点并不总是具有很高的介数中心度。
最后使用Betweenness Centrality
介数中心度对节点的颜色进行渲染。
预览结果如下:
在数据集中存在每一节点的经纬度信息,我们可以依据这个信息在将节点绘制在地图的相应地理位置上。首先,我们应用 Geo Layout
布局,使用十六世纪地理学家Mercator
绘制的投影地图来布局(因为之后我们使用的欧洲地图背景是使用的此类地图,更多国家和各大洲的SVG地图可以通过SVG MAPS 网站进行下载)。点击运行
执行布局操作,结果如下图所示:
我们发现许多节点重合在了一起,接下来我们应用noverlap
布局使得节点不会互相重叠(注意每个应用这个布局都可能产生不一样的布局结果,但最初重叠在一块的节点都会挨在一起):
最后,在预览
窗口,检查及微调最后的网络展示细节,并将最终的欧洲信件网络图导出为 .svg 格式的文件比如 network_betweenness.svg 。
在 Inkscape 中依次导入两个svg图,然后调整到一致的大小,再将城市图层移到最前以看清楚城市的文字,最终得到的结果如下图:
最后我们将 network_betweenness.svg 与 欧洲地图文件 Mapbase.svg 合并在一起,这里需要用到Inscape,软件的下载和使用详见Inscape官网。
欧洲地图背景如下图所示:
在应用Geo Layout
之后,我们可以选择使用network_betweenness
来渲染节点的大小(最小尺寸为25,最大尺寸为120),使用Modularity Class
来渲染节点的颜色。得到的结果如下:
并将其导出为 network_modularity.svg。然后将两个svg文件通过 Inkscape 合并在一起,得到如下结果:
从最终的图中我们可以看到,社区基本上能够跟地理区域对应上,但是也存在某一社区A所在某一地区内存在另一社区B的成员,那么我们可以猜测这个成员是该地区的外来人员,他/她的亲属网络在社区B内,所以他/她的信件来往与社区B内的成员来往频繁,故而属于社区B。