想快速學會如何將複雜的社會網絡做成直觀炫酷的可視化?軟件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, 周煒樂