前面一系列文章已經介紹過 Neo4j Bloom
以及 Neo4j GDS
,Bloom 的強處是視覺化,GDS 的強處是演算法,現在該是時候把兩者結合了!畢竟光看數字實在毫無感覺啊~
目前為止介紹了以 Neo4j GDS 實作 PageRank 和 Label Propagation,並且也將資料分析結果寫回原圖形資料庫,所以 Person 節點應該都要有 pageRank 和 community 兩個屬性。
接著就能根據這兩個屬性,來調整 Bloom 樣式
根據人物重要性,重要性愈高,節點的顯示愈大
根據分群結果將節點從紅到綠上色,顏色相同表示為同一群
先一覽所有 Person 節點,很快可以看出特別重要的人物,以及大略的分群結果。
回顧之前在 Neo4j Bloom 自然語言搜尋與自訂樣式 已經介紹過在 Bloom 使用自定義的 Cypher 語法來顯示圖形,現在我們可以透過 Cypher 取得最重要的十位人物,以及其互動關係
MATCH (p:Person) WHERE EXISTS(p.pageRank) AND EXISTS(p.community)
WITH p ORDER BY p.pageRank DESC LIMIT 10
MATCH (p)-[r:INTERACTS]-(o)
RETURN p,r,o
但是如果我們想看前三位重要人物呢?再改一次語法?不是的!Neo4j Bloom 的 Cypher 可以定義外來參數,可以將常變動的部分抽離出來如下
這樣的話只要輸入 top 3 characters 即可,可以很方便的調整圖形重點。
GDS 和 Bloom 系列就先介紹到這裡,這部分還是要請大家試試手邊的資料,才會更有感覺啊!