Python-iGraph绘制社交网络好友关系图实战指南

Ada
Ada
发布时间:2026-10-13| 2人浏览过
原创

本文详细介绍如何在Windows环境下安装Python-iGraph库,并通过读取粉丝与关注数据文件,利用igraph库绘制特定用户的社交好友关系图。文章涵盖从环境配置到代码实现的全过程,展示如何生成可视化的社交网络结构,为社交数据分析提供直观参考。

前言

近期在工作中,我有需求通过图形化界面展示社交网络中特定用户的好友关联。经过对networkx、graphviz等图形库的调研与对比,最终选定iGraph作为解决方案。接下来将直接切入主题,详细介绍具体实现步骤。

安装igraph

在Windows系统中安装igraph相对复杂。此前尝试通过pip或conda直接安装均告失败,后来发现lfd网站提供的“Python扩展包非官方Windows二进制文件”资源库,其中包含丰富的Python资源、库及工具,是解决该问题的关键。

访问上述网址,搜索python_igraph,并根据Python版本及系统位数(32位或64位)下载对应的whl文件。例如,我下载的文件名为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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。