2、igraph的简单实战

1、 安装igraph

pip install igraph

2、安装用于可视化的pycairo

pip install pycairo

3、 igraph入门练习

        构建一个社交网络;对每个节点、边赋属性;提取子图;生成邻接矩阵...

import igraph as ig
import matplotlib.pyplot as plt
import pickle
g = ig.Graph([(0,1), (0,2), (2,3), (3,4), (4,2), (2,5), (5,0), (6,3), (5,6)],directed=True)  # 生成一个有向图,directed控制是有向图 or无向图
g.vs["name"] = ["Alice", "Bob", "Claire", "Dennis", "Esther", "Frank", "George"]   #给节点vs附属性,vs、es可以看成一个字典
g.vs["age"] = [25, 31, 18, 47, 22, 23, 50]
g.vs["gender"] = ["f", "m", "f", "m", "f", "m", "m"]
g.es["is_formal"] = [False, False, True, True, True, False, True, False, False]
g.vs["label"] = g.vs["name"]  # 可视化时,节点的标签由“label”属性控制
color_dict = {"m": "blue", "f": "pink"}
g.vs["color"] = [color_dict[gender] for gender in g.vs["gender"]] # 可视化时,节点的颜色由“color”属性控制

layout = g.layout("kk")   #  采用布局绘图
fig, ax = plt.subplots(1,2,figsize=(15,15))  # matplotlib方式绘图,1,2为1×2两个子图
ig.plot(g, layout=layout, target=ax[0],bbox=(400, 400), margin=1,vertex_label_dist=10)  # 采用matplotlib的方式绘图

member=[0,1,2,3,4]
a=g.subgraph(member)  # 提取子图
ig.plot(a, layout=layout,target=ax[1], bbox=(400, 400), margin=1,vertex_label_dist=10)  # 采用matplotlib的方式绘图

neis = a.predecessors(2)  # 前驱(有向图有前驱和后继,无向图则是邻居)
print(neis)
b=a.get_adjacency()   # 获取子图的邻接矩阵
print(b)  
for i in range(a.vcount()):  # 保存节点编号与节点的对应关系
    id_node[i]=a.vs[i]['name']
print(id_node)

        实验结果:

参考资料:

igraph 上手教程——使用 Python 开展社会网络分析和可视化 - 简书

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值