利用Python-iGraph如何绘制贴吧/微博的好友关系图详解


Posted in Python onNovember 02, 2017

前言

最近工作中遇到了一些需求,想通过图形化的方式显示社交网络特定用户的好友关系,上网找了一下这方面的图形库有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-8
from 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+=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()   #创建
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"]=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)

最终结果如图:

利用Python-iGraph如何绘制贴吧/微博的好友关系图详解

以上只演示了一个用户的社交关系图,有精力的话可以尝试递归地一层一层爬下去,想象一下最终绘出来的图也是挺炫酷的。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
python下os模块强大的重命名方法renames详解
Mar 07 Python
python实现画圆功能
Jan 25 Python
Python针对给定列表中元素进行翻转操作的方法分析
Apr 27 Python
Python使用add_subplot与subplot画子图操作示例
Jun 01 Python
python最小生成树kruskal与prim算法详解
Jan 17 Python
对Python Pexpect 模块的使用说明详解
Feb 14 Python
Django实现单用户登录的方法示例
Mar 28 Python
Python动态参数/命名空间/函数嵌套/global和nonlocal
May 29 Python
Django实现将一个字典传到前端显示出来
Apr 03 Python
python查看矩阵的行列号以及维数方式
May 22 Python
scrapy redis配置文件setting参数详解
Nov 18 Python
OpenCV-Python 实现两张图片自动拼接成全景图
Jun 11 Python
python3.0 模拟用户登录,三次错误锁定的实例
Nov 02 #Python
Python安装Numpy和matplotlib的方法(推荐)
Nov 02 #Python
Python 多进程并发操作中进程池Pool的实例
Nov 01 #Python
python 3.0 模拟用户登录功能并实现三次错误锁定
Nov 01 #Python
python 简单搭建阻塞式单进程,多进程,多线程服务的实例
Nov 01 #Python
Python编程实现双链表,栈,队列及二叉树的方法示例
Nov 01 #Python
Python栈算法的实现与简单应用示例
Nov 01 #Python
You might like
总集篇&特番节目先行播出!《SAO Alicization War of Underworld》第2季度TV动画4月25日放送!
2020/03/06 日漫
怎样去阅读一份php源代码
2009/08/21 PHP
火车采集器 免费版使出收费版本功能实现原理
2009/09/17 PHP
Jquery选择子控件"大于号"和" "区别介绍及使用示例
2013/06/25 Javascript
avalonjs制作响应式瀑布流特效
2015/05/06 Javascript
js模糊查询实例分享
2016/12/26 Javascript
详解win7 cmd执行vue不是内部命令的解决方法
2017/07/27 Javascript
vue params、query传参使用详解
2017/09/12 Javascript
vue  自定义组件实现通讯录功能
2018/09/30 Javascript
JS开发 富文本编辑器TinyMCE详解
2019/07/19 Javascript
利用d3.js实现蜂巢图表带动画效果
2019/09/03 Javascript
解决Can't find variable: SockJS vue项目的问题
2020/09/22 Javascript
原生js实现自定义消息提示框
2020/11/19 Javascript
原生js实现表格循环滚动
2020/11/24 Javascript
Python中optparse模块使用浅析
2015/01/01 Python
Python时间戳使用和相互转换详解
2017/12/11 Python
python实现石头剪刀布程序
2021/01/20 Python
Python 利用切片从列表中取出一部分使用的方法
2019/02/01 Python
Django如何实现网站注册用户邮箱验证功能
2019/08/14 Python
Python中关于浮点数的冷知识
2019/09/22 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
2019/09/25 Python
python 进程池pool使用详解
2020/10/15 Python
python读取excel数据绘制简单曲线图的完整步骤记录
2020/10/30 Python
美国时尚女装在线:Missguided
2016/12/03 全球购物
公司周年庆典策划方案
2014/05/17 职场文书
身边的榜样活动方案
2014/08/20 职场文书
产品委托授权书范本
2014/09/16 职场文书
居委会四风问题个人对照检查材料
2014/09/25 职场文书
工伤死亡理赔协议书
2014/10/20 职场文书
初二学生评语大全
2014/12/26 职场文书
酒店总经理岗位职责
2015/04/01 职场文书
2015年驾驶员工作总结
2015/04/29 职场文书
2015年行风建设工作总结
2015/05/15 职场文书
Nginx反向代理至go-fastdfs案例讲解
2021/08/02 Servers
十大最强奥特曼武器:怪兽战斗仪在榜,第五奥特之父只使用过一次
2022/03/18 日漫
解决xampp安装后Apache无法启动
2022/03/21 Servers