欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

利用Python-iGraph如何繪制貼吧/微博的好友關(guān)系圖詳解

 更新時(shí)間:2017年11月02日 09:50:03   作者:lovealways  
這篇文章主要給大家介紹了關(guān)于利用Python-iGraph如何繪制貼吧/微博好友關(guān)系圖的相關(guān)資料,文中顯示介紹了在windows系統(tǒng)下安裝python-igraph的步驟,然后通過示例代碼演示了繪制好友關(guān)系圖的方法,需要的朋友可以參考下。

前言

最近工作中遇到了一些需求,想通過圖形化的方式顯示社交網(wǎng)絡(luò)特定用戶的好友關(guān)系,上網(wǎng)找了一下這方面的圖形庫有networkx、graphviz等,找了好久我選擇了iGraph這個(gè)圖形庫。下面話不多說了,來一起看看詳細(xì)的介紹吧。

安裝igraph

igraph在Windows下的安裝稍微有點(diǎn)麻煩,之前嘗試在windows用pip和conda直接裝igraph都裝不上,后來發(fā)現(xiàn)了lfd的網(wǎng)站 Unofficial Windows Binaries for Python Extension Packages , 里面有很多python的資源和庫與工具。

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

利用pip 安裝whl文件:pip install 文件名.whl

為了避免出錯(cuò),打開cmd以后,要cd進(jìn)入你存放的該whl文件的解壓后的目錄下在用pip進(jìn)行安裝。

繪制好友關(guān)系圖

fans.txt 和 follow.txt分別保存了爬取下來的粉絲昵稱以及關(guān)注人昵稱。

#coding=utf-8
from igraph import *

count_fans=0   #粉絲數(shù)
count_following=0  #關(guān)注人數(shù) 
fans_name=[]   #粉絲昵稱
following=[]   #關(guān)注人昵稱
#打開爬取下的昵稱文件
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+=1
with open('follow.txt','r') as c:
 lines=c.readlines()
 for line in lines:
  if (line!=None)&(line!='\n'):
   following.append(line)
   count_following+=1

g = Graph()   #創(chuàng)建
g.add_vertices(3+count_fans+count_following)
g.add_edges([(0,1),(1,2)])

g.vs[0]["name"]='Ta的粉絲'
g.vs[1]["name"]='目標(biāo)用戶'
g.vs[2]["name"]='Ta的關(guān)注'
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"]=False
for j in range(count_fans+3,3+count_fans+count_following):
 g.add_edges((2,j))
 g.es[j-1]["trunk"]=False

index=3
for fans in fans_name:
 g.vs[index]["name"]=fans
 g.vs[index]["main_node"]=False
 index+=1
for name in following:
 g.vs[index]["name"]=name
 g.vs[index]["main_node"]=False
 index+=1

visual_style = {}
color_dic={1.5:"#cfe6ff",3:"#7299a7",False:"#cfe6ff"}
visual_style["vertex_label_size"]=11
visual_style["vertex_label_dist"]=1
visual_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"] = 150
layout = g.layout("grid_fr")
visual_style["layout"] = layout
plot(g, **visual_style)

最終結(jié)果如圖:

以上只演示了一個(gè)用戶的社交關(guān)系圖,有精力的話可以嘗試遞歸地一層一層爬下去,想象一下最終繪出來的圖也是挺炫酷的。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

最新評(píng)論