利用Python-iGraph如何繪製貼吧/微博的好友關係圖詳解,python-igraph繪製

來源:互聯網
上載者:User

利用Python-iGraph如何繪製貼吧/微博的好友關係圖詳解,python-igraph繪製

前言

最近工作中遇到了一些需求,想通過圖形化的方式顯示社交網路特定使用者的好友關係,上網找了一下這方面的圖形庫有networkx、graphviz等,找了好久我選擇了iGraph這個圖形庫。下面話不多說了,來一起看看詳細的介紹吧。

安裝igraph

igraph在Windows下的安裝稍微有點麻煩,之前嘗試在windows用pip和conda直接裝igraph都裝不上,後來發現了lfd的網站 Unofficial Windows Binaries for Python Extension Packages , 裡面有很多python的資源和庫與工具。

在上面的網址中找到python_igraph去下載具體的python對應版本和是32位還是64位的,比如我下載了 python_igraph‑0.7.1.post6‑cp35‑none‑win_amd64.whl

利用pip 安裝whl檔案:pip install 檔案名稱.whl

為了避免出錯,開啟cmd以後,要cd進入你存放的該whl檔案的解壓後的目錄下在用pip進行安裝。

繪製好友關係圖

fans.txt 和 follow.txt分別儲存了爬取下來的粉絲暱稱以及關注人暱稱。

#coding=utf-8from igraph import *count_fans=0   #粉絲數count_following=0  #關注人數 fans_name=[]   #粉絲暱稱following=[]   #關注人暱稱#開啟爬取下的暱稱檔案with open('fans.txt','r') as f:   lines=f.readlines() for line in lines:  if (line!=None)&(line!='\n'):   fans_name.append(line)   # print fans_name   count_fans+=1with open('follow.txt','r') as c: lines=c.readlines() for line in lines:  if (line!=None)&(line!='\n'):   following.append(line)   count_following+=1g = Graph()   #建立g.add_vertices(3+count_fans+count_following)g.add_edges([(0,1),(1,2)])g.vs[0]["name"]='Ta的粉絲'g.vs[1]["name"]='目標使用者'g.vs[2]["name"]='Ta的關注'g.es["trunk"] = [True, True]g.vs["main_node"]=[1.5,3,1.5]for i in range(3,count_fans+3): g.add_edges((0,i)) g.es[i-1]["trunk"]=Falsefor j in range(count_fans+3,3+count_fans+count_following): g.add_edges((2,j)) g.es[j-1]["trunk"]=Falseindex=3for fans in fans_name: g.vs[index]["name"]=fans g.vs[index]["main_node"]=False index+=1for name in following: g.vs[index]["name"]=name g.vs[index]["main_node"]=False index+=1visual_style = {}color_dic={1.5:"#cfe6ff",3:"#7299a7",False:"#cfe6ff"}visual_style["vertex_label_size"]=11visual_style["vertex_label_dist"]=1visual_style["vertex_shape"]="circle"visual_style["vertex_size"] = [7+ 10*int(main_node) for main_node in g.vs["main_node"]]visual_style["edge_width"] = [1 + 2 * int(trunk) for trunk in g.es["trunk"]]visual_style["vertex_color"] =[color_dic[main_node] for main_node in g.vs["main_node"]]visual_style["vertex_label"] = g.vs["name"]visual_style["bbox"] = (1000, 1000)visual_style["margin"] = 150layout = g.layout("grid_fr")visual_style["layout"] = layoutplot(g, **visual_style)

最終結果

以上只示範了一個使用者的社交關係圖,有精力的話可以嘗試遞迴地一層一層爬下去,想象一下最終繪出來的圖也是挺炫酷的。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對幫客之家的支援。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.