7-1_basic_network

网络构建与可视化

  • 发布日期:2019-11-12
  • 难度:一般
  • 类别:社会网络分析
  • 标签:社会网络分析、网络构建与可视化、节点、边

1. 问题描述

社会网络的构建与可视化

2. 程序实现

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

#NetworkX基本操作
G=nx.Graph() #创建一个空的图
G.add_node(1) #为图添加一个节点
print(list(G.nodes)) #查看所有节点
[1]
In [2]:
#查看所有边
print(list(G.edges)) 
[]
In [3]:
#从list中添加节点
G.add_nodes_from([2,3,4,5]) 
print(list(G.nodes))
[1, 2, 3, 4, 5]
In [4]:
#添加一条边
G.add_edge(1,2) 
print(list(G.edges))
#从list中添加边
G.add_edges_from([(1,3),(2,3),(3,4),(4,5)]) 
print(list(G.edges))
[(1, 2)]
[(1, 2), (1, 3), (2, 3), (3, 4), (4, 5)]
In [5]:
print(G.number_of_nodes()) #查看一共有多少节点
print(G.number_of_edges()) #查看一共有多少边
5
5
In [6]:
#绘制网络图
nx.draw(G,with_labels=True)
plt.show()
In [7]:
#通过调节参数,绘制个性化网络图
nx.draw(G,with_labels=True,pos=nx.circular_layout(G),font_size=20,node_size=2000,alpha=0.7,node_color='g',edge_color='gray',style='dashed',width=5,font_weight='bold')
plt.show()
In [8]:
#为边赋权重的三种方法
G.add_edges_from([(4, 5, {'weight': 3}), (2, 3, {'weight': 8})])
G[1][2]['weight'] = 4.7
G.add_weighted_edges_from([(1, 3, 6.5),(3, 4, 9.8)])
#绘制图中边的权重
edge_labels=dict([((u,v,),d['weight']) for u,v,d in G.edges(data=True)])
nx.draw_networkx_edge_labels(G,pos=nx.circular_layout(G),edge_labels=edge_labels,font_size=15)
#绘制网络图
nx.draw(G,with_labels=True,font_size=15,node_size=1500, pos=nx.circular_layout(G),width=[float(d['weight']*0.5) for (u,v,d) in G.edges(data=True)])
plt.show()