自我网络(Ego graph)是一种特殊类型的网络,由一个中心节点和所有直接与之相连的其他节点组成。
中心节点被称为 自我(ego),而与之直接相连的其他周围节点被称为 分身( alters)。
自我网络大多用于分析社会联系、链接和关系。下图所示的网络是自我网络的一个说明。中心节点(自我)显示为圆形,被邻近的节点(替代者)包围。
自我网络在社会网络分析中被广泛使用。关于自我网络的基本假设是,强关系是亲和性的。同源性是指在某种程度上有社会联系的个人显示出某些特质或相似性的倾向。简单地说,志同道合的人以某种方式紧密相连。自我网络帮助我们识别这些隐藏的联系。
可以下处理时经常会用到 Ego Network
API介绍
ego_graph(G, n, radius=1, center=True, undirected=False, distance=None)
参数
import networkx as nx
import matplotlib.pyplot as plt
G = nx.Graph()
G.add_edges_from([('A', 'B'), ('A', 'C'),('B', 'C'), ('E', 'F'),('D', 'E'), ('A', 'D'),('D', 'G'), ('C', 'F'),('D', 'F'), ('E', 'H')])
# Defining ego as large and red
# 定义 节点 A 作为 ego
ego = 'A'
pos = nx.spring_layout(G)
nx.draw(G, pos, node_color = "lavender",node_size = 800, with_labels = True)
options = {"node_size": 1200, "node_color": "r"}
nx.draw_networkx_nodes(G, pos, nodelist=[ego], **options)
plt.show()
这里的ego_graph 全部使用了默认参数,例如radius =1,默认是1-hop网络
hub_ego = nx.ego_graph(G, ego)
# 画出 ego 网络
nx.draw(hub_ego, pos, node_color="lavender",node_size = 800, with_labels = True)
nx.draw_networkx_nodes(hub_ego, pos, nodelist = [ego], **options)
plt.show()
参考
Ego graph Using Networkx in Python - GeeksforGeeks
ego_graph — NetworkX 3.0 documentation