7-3_relation_network

关联性与凝聚度

  • 发布日期:2019-11-12
  • 难度:一般
  • 类别:社会网络分析
  • 标签:社会网络分析、关联性、凝聚度、关联图、子图、桥、最短路径、距离、直径、密度

1. 问题描述

社会网络的关联性与凝聚度指标

2. 程序实现

In [1]:
import networkx as nx
import matplotlib.pyplot as plt

#与关联性有关的概念
#构建网络图
G = nx.path_graph(4)
G.add_nodes_from([4,5,6,7,8])
G.add_edges_from([(4,5),(4,6),(5,6),(6,7),(7,8)])
#绘制网络图
nx.draw(G,with_labels=True,font_size=20,node_size=2000,pos=nx.kamada_kawai_layout(G)) 
plt.show()
In [2]:
#判断是否为关联图
print(nx.is_connected(G))
False
In [3]:
#返回所有子图的节点
print(sorted(nx.connected_components(G), key=len, reverse=True)) 
#返回最大连通子图的节点
largest_cc = max(nx.connected_components(G), key=len) 
print(largest_cc)
[{4, 5, 6, 7, 8}, {0, 1, 2, 3}]
{4, 5, 6, 7, 8}
In [5]:
#得到最大连通子图
G1=max(nx.connected_component_subgraphs(G),key=len) 
#绘制最大连通子图
nx.draw(G1,with_labels=True,font_size=20,node_size=2000,pos=nx.kamada_kawai_layout(G)) 
plt.show()
In [6]:
#判断图中是否存在桥
print(nx.has_bridges(G))
#返回图中存在的所有桥
print(list(nx.bridges(G)))
True
[(0, 1), (1, 2), (2, 3), (6, 7), (7, 8)]
In [7]:
import networkx as nx
import matplotlib.pyplot as plt

#构建网络图
G = nx.Graph()
G.add_nodes_from([1,2,3,4,5])
G.add_edges_from([(1,2),(1,3),(2,3),(3,4),(4,5)])

print(nx.shortest_path(G,source=1,target=4)) #最短路径
print(nx.shortest_path_length(G,source=1,target=4)) #距离
print(nx.diameter(G)) #直径
print(nx.density(G)) #密度
[1, 3, 4]
2
3
0.5