微信搜索公众号:你好世界炼丹师。期待您的关注。
networkx在2002年5月产生,是一个用Python语言开发的图论与复杂网络建模工具,内置了常用的图与复杂网络分析算法,可以方便的进行复杂网络数据分析、仿真建模等工作。
networkx支持创建简单无向图、有向图和多重图;内置许多标准的图论算法,节点可为任意数据;支持任意的边值维度,功能丰富,简单易用。
import networkx as nx
import matplotlib.pyplot as plt
G = nx.Graph()
G.add_node('a')
G.add_node_from(['b','c','d','e'])
nx.draw(G,with_labels=True)
plt.show()
print('图中所有的节点', G.nodes())
print('图中节点的个数', G.number_of_nodes())
G.remove_node(1) #删除指定节点
G.remove_nodes_from(['b','c','d','e']) #删除集合中的节点
G.add_edge('a','b')
G.add_edges_from([('a','c'),('a','d'),('a','e')])
print('图中所有的边', F.edges())
print('图中边的个数', F.number_of_edges())
for u,v,d in G.edges(data = 'weight'):
print((u,v,d))
for n, nbrs in G.adjacency():
for nbr, eattr in nbrs.items():
print('({},{})'.format(n,nbr))
for n, nbrs in G.adjacency():
for nbr, eattr in nbrs.items():
data = eattr['weight']
print('({},{},{})'.format(n,nbr,data))
参考小世界网络和复杂网络+python代码实现
import networkx as ne #导入建网络模型包,命名ne
import matplotlib.pyplot as plt #导入科学绘图包,命名mp
#WS network graphy
print('请输入网络节点总数NETWORK_SIZE:')
NETWORK_SIZE=int(input())
print('请输入规则网络要连的邻接个数k:')
k=int(input())
print('请输入重连概率p:')
p=float(input())
ws=ne.watts_strogatz_graph(NETWORK_SIZE,k,p)
ps=ne.circular_layout(ws)#布置框架
ne.draw(ws,ps,with_labels=False,node_size=30)
plt.show()
生成含有20个节点,每个节点包含3个邻居的规则图
import networkx as nx
import matplotlib.pyplot as plt
RG = nx.random_graphs.random_regular_graph(3,20)
# pos = nx.spectral_layout(RG)
pos = nx.circular_layout(RG)
nx.draw(RG,pos,with_labels=False,node_size = 30)
plt.show()
以概率p生成N个节点中的每一对节点
import networkx as nx
import matplotlib.pyplot as plt
ER = nx.random_graphs.erdos_renyi_graph(20,0.2)
pos = nx.shell_layout(ER)
nx.draw(ER,pos,with_labels = False,node_size = 30)
plt.show()
涩会给你成n个节点,每次加入m条边的BA无标度网络
import networkx as nx
import matplotlib.pyplot as plt
BA = nx.random_graphs.barabasi_albert_graph(20,1)
pos = nx.spring_layout(BA)
nx.draw(BA,pos,with_labels=False,node_size=30)
plt.show()