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

作者:lovealways 时间:2022-02-26 07:16:32 

前言

最近工作中遇到了一些需求,想通过图形化的方式显示社交网络特定用户的好友关系,上网找了一下这方面的图形库有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如何绘制贴吧/微博的好友关系图详解

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

来源:http://www.cnblogs.com/lovealways/p/6653006.html

标签:python-igraph,安装,绘图
0
投稿

猜你喜欢

  • 微信小程序picker组件简单用法示例

    2023-07-23 10:49:32
  • 微信小程序开发工具介绍

    2023-08-10 23:05:40
  • asp用err.raise自定义错误信息

    2007-09-12 19:38:00
  • python中常见错误及解决方法

    2022-01-10 05:52:40
  • Sublime开发python程序的示例代码

    2023-11-06 09:45:46
  • python中base64编码简介

    2023-09-21 20:26:12
  • TensorFlow 实战之实现卷积神经网络的实例讲解

    2022-11-16 20:35:15
  • php实现pdo数据库操作类过程详解

    2023-05-25 11:15:05
  • Python使用sftp实现传文件夹和文件

    2021-09-30 12:27:37
  • python用opencv将标注提取画框到对应的图像中

    2023-01-18 21:10:16
  • ASP 字符串转数字格式

    2009-08-19 17:18:00
  • Python shelve模块实现解析

    2023-06-23 16:58:01
  • python抓取网站的图片并下载到本地的方法

    2022-05-19 23:45:08
  • Laravel实现批量更新多条数据

    2023-10-23 03:23:03
  • CSS Shadow Practice

    2009-04-01 18:37:00
  • 使用:after清除浮动

    2008-10-30 12:10:00
  • 初识Firebug 全文 — firebug的使用

    2007-10-23 12:54:00
  • php session 检测和注销

    2023-11-17 22:45:02
  • 使用Python文件读写,自定义分隔符(custom delimiter)

    2021-12-06 08:17:51
  • 高效率的GetRows()的使用方法

    2008-09-23 18:29:00
  • asp之家 网络编程 m.aspxhome.com