想快速学会如何将复杂的社会网络做成直观炫酷的可视化?软件NodeXL是你的绝佳选择:会用Excel,就会用它生成网络图。在2014年计算机辅助报道协会巴尔的摩年会 (NICAR 2014) 上,BuzzFeed News 的科学与健康记者Peter Aldhous就介绍了NodeXL的用法,手把手教你分析美国共和党人中倾向于民主党的有哪些。准备好了吗?一起打开Excel跟着学吧!
NodeXL是一款适用于Microsoft Excel 2007及更高版本Excel的模板,它采用常见的电子表格界面进行社交网络分析。
从NodeXL网站下载模板,然后用Excel打开:
要注意,NodeXL有自己的菜单功能,第一个工作簿的命名是“Edges(连线)”。
网络图(或者说“连线”)反映的是人、机构等主体间的关系,这些主体则被叫做“节点”或“顶点”。
你可以在NodeXL中输入自己的数据,将关系网中的一系列边线存入这个工作簿。以一场小型聚会为例,我们输入一群假想朋友之间的关系。将模版重命名并保存为Excel工作簿文件,然后将以下数据输入“连线”工作簿:
这个例子里,我们只记录朋友关系——这是一种没有指向性的关系。因此图形的类型可设为“无指向(Undirected)”。(如果要记录每个朋友是否邀请其他人参加聚会——比如一个叫Ann的人邀请了她的朋友Carol——那么这个参数就要改成“指向性(Directed)”且需要第二条线,两边的名字要颠倒过来再写一遍。)
接着点击NodeXL菜单中的“显示图形(Show Graph)”按钮,一个表示网络关系的简单图形就会出现在下方窗口中:
转换到“顶点”工作簿,这里会出现所有人的名字。在每个名字后“其他栏(Other Columns)”里添加性别信息:
点击“自动填充列(Autofill Columns)”,选择“顶点”标签,在标签选项中选择 “Vertex”或朋友们的姓名,并依据性别选择颜色。最后这步的做法是:点击末尾的“选项(Options)”箭头,在列值选项中选择“类别(Categories)”,然后点击“OK”。
点一下“自动填充”关闭窗口。现在,“颜色”列已出现RGB色彩数值,“标签”列则包含朋友们的名字,图形也更新了——如果没有,就点击“刷新图形(Refresh Graph)”按钮。
学会了这些基本操作后,我们就可以探索更有趣的关系网了。下面这份数据以2013年美国参议院的投票模式为基础,是用Python写的小程序从govtrack.us网站上抓取的(下载数据点击这里)。你也可以通过微调Python程序来改动这个名单上代表国会会议的数字和年份,以便探索参议院各项议程的投票模式。
这份数据的格式是graphml。在空白NodeXL模版上,选择“导入(Import)”>“从Graphml文件导入”,打开该数据文件(如果弹窗提示“是否关闭文本换行”,选择“是”)。 导入文件后,以Excel工作簿格式保存为新文件。“连线”工作表里储存了成对的议员列表,通过以一对议员投票一致的次数除以其全部投票数,可以计算并在“协同比例(percent_agree)”一列中,显示在同一议程里这些议员的投票情况。
“顶点”(Vertices)工作表列出了每个参议员,并用颜色标示其党派:
点击“显示图形”就会出现下面的图形,图中每个点代表的议员和其他所有人都有联系,因为每一对议员起码同时投了一次票:
NodeXL的强大之处,在于能让你轻松筛选和定制关系网的可视化结果。处理类似上图这种复杂关系网的首要任务,就是要揭示其核心结构,对此我们有两种方法。
点击“动态筛选(Dynamic Filters)”会出现一系列滑动条,通过拖拉滑动条,我们可以在网络图中隐藏或显示“连线”和“节点”。譬如如果从左向右移动“协同比例”的滑动条,就会看到一些“连线”在此过程中消失。不过这对我们所研究的关系网本身不会有任何影响。例如通过计算描述关系网的各项度量指标所得到的那些结果,并不会因“动态筛选”这一过程而改变。
除上面的第一种方法外,我们还可以利用“自动填充列”,它能在筛选模式下进行后续研究。
点击“自动填充列”(Autofill Columns)按钮,选中“连线”标签。这次我们筛选相关参议员的标准是,全部投票中,他们至少在2/3的投票上出现了一致。选择“连线可视度(Edge Visibility)=协同比例(percent_agree)”,如下图所示填好“选项”一列,并点击“OK”:
现在点击“自动填充”,重新生成图形。记得将“布局(Layout)”选项设成Fruchterman-Reingold模式,这是最合适此系列数据的自动布局算法。多次点击“再布局(Lay Out Again)”,直到得到两簇清晰的关系群。
正如所料,这些群簇与民主党和共和党相对应。但有三个共和党议员和其他人显著不同。他们是谁?我们要再次用“自动填充列”来寻找他们。
在“顶点”标签里,选择“Vertex Label=Vertex”,以名字标示每个点所代表的参议员。点击“自动填充”,然后“关闭”,接着点击“再布局”,直到获得以下图形:
关系网中最有趣的议员是来自缅因州的Susan Collins和来自阿拉斯加州的Lisa Murkowski,他们俩和民主党关系密切,却和自己党派的议员貌合神离。尤其是Collins,她是联系两党的唯一节点。我们通过计算一些关系网指标来定制图形,以标注她在关系网中的角色。
NodeXL能计算以下这些社会网络研究中的常见指标:
程度(Degree),指每个节点拥有的关系链接数。对于指向型关系网,有内向程度(In-degree)和外向程度(Out-degree)之分,前者是指向内部的关系链接数,后者是指向外部的关系链接数。
特征向量中心性(Eigenvector centrality)所关注的不仅包括某一节点的关系链接数量,还包括与该节点相链接的是哪些节点,以及那些节点各自的关系链接数量是多少。
中介中心性(Betweenness centrality)则揭示出每个节点在不同关系网间提供“桥梁作用”的重要程度。它所特别标出的点,是一些移除后会导致整个网络崩塌的重要节点。
接近中心性(Closeness centrality)用于量度关系网中每个节点离其他节点的平均距离。它特别标出以较少连线与其他节点联系的点——这就类似于Kevin Bacon的六度理论(即在世界上任意两个陌生人之间只隔着六个人)。
在我们选用的这个例子里,“中介中心性”是一个有趣的指标,因为它能标示出最具“两党性”的议员。选择“图形指标(Graph Metrics)”,点击“Vertex中介和接近中心性”,然后点击“计算指标”:
“顶点”表中的相关列中就会出现如下数据:
现在根据“中介中心性(betweenness centrality)”这一指标来决定参议员簇的大小。点击“自动填充列”,选择“顶点标签”,然后设置“Vertex大小=中介中心性”。使用“选项”,设置极大值为20,点击“OK”。
点击“自动填充”并关闭窗口。接着点击“再分布”,直到出现下图(可能需要调整极大值以获取有意义的图像):
现在该保存图像了。右键点击图像,选择“保存图像到文件”>“图像选项”以定制图片大小。再次点击右键,选择“保存图像到文件”>“以PNG和JPEG等格式保存图像”。
我们已经根据党派给议员们标示了颜色,但其实NodeXL也可用聚类算法探查模式相似的顶点集合。选择“组(Groups)”>“以群分组(Group by Cluster)”,并选择“Clauset-Newman-Moore”聚类算法。点击“刷新图形”,继续点击“再分布”,直到得到下图:
Collins和Murkowski均为共和党人,但在2013年的投票行为模式上,聚类算法将她们归在民主党内。
想要学习更多NodeXL使用技巧,请参考Analyzing Social Media Networks With NodeXL一书。
Peter Aldhous 是BuzzFeed News 的科学与健康记者,现居于旧金山。他在加州大学圣克鲁兹分校的科学传播项目教授调查报道和政策报道,在伯克利分校教授数据可视化。同时,他开办了数据分析和可视化工作坊,为记者和其他专业人士提供培训。其新闻作品斩获了数项由美国医疗记者协会和环境新闻工作者协会等组织颁布的奖项。
翻译/王一苇,编辑/Ivan Zhai, 周炜乐