国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

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

2020-02-16 10:34:05
字體:
供稿:網(wǎng)友

前言

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

安裝igraph

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

在上面的網(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-8from 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+=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()   #創(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"]=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)

最終結(jié)果如圖:

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 陆河县| 紫阳县| 广饶县| 开鲁县| 青河县| 西乌珠穆沁旗| 灵川县| 新闻| 波密县| 桃源县| 方城县| 财经| 麟游县| 宁都县| 和政县| 广昌县| 罗定市| 伊宁市| 杭锦旗| 萨迦县| 安西县| 米脂县| 浪卡子县| 开原市| 洛浦县| 眉山市| 赣州市| 台安县| 增城市| 锡林浩特市| 克什克腾旗| 武平县| 汉中市| 德安县| 镇远县| 班戈县| 永济市| 颍上县| 黑龙江省| 怀集县| 新干县|