Python NetworkX
networkx是一个python包,用于创建、操作和研究复杂网络的结构、动态和功能使用NetworkX,您可以以标准和非标准数据格式加载和存储网络,生成多种类型的随机和经典网络,分析网络结构,构建网络模型,设计新的网络算法,绘制网络,https://networkx.org/documentation/stable/auto_examples/index.html................
·
networkx是一个python包,用于创建、操作和研究复杂网络的结构、动态和功能
使用NetworkX,您可以以标准和非标准数据格式加载和存储网络,生成多种类型的随机和经典网络,分析网络结构,构建网络模型,设计新的网络算法,绘制网络,
Gallery — NetworkX 2.8.4 documentation
建图
G = nx.Graph() #定义了一个空图 #有向图 G = nx.DiGraph()
添加节点
import matplotlib.pyplot as plt import networkx as nx G = nx.Graph() #定义了一个空图 G.add_node(1) #增加了1节点 G.add_node('A') #增加了A节点 G.add_nodes_from([2, 3]) #同时加2和3两个节点 nx.draw(G, with_labels=True) plt.show()
如果nx.draw不带with_labels=True
添加边
import matplotlib.pyplot as plt import networkx as nx G = nx.Graph() #定义了一个空图 G.add_node(1) #增加了1节点 G.add_node('A') #增加了A节点 G.add_nodes_from([2, 3]) #同时加2和3两个节点 G.add_edges_from([(1,2),(1,3),(2,'A'),(2,3)]) #添加边 G.add_edge(2,'A') nx.draw(G, with_labels=True) plt.show()
添加边带权重
G.add_weighted_edges_from([(i, j, weight)])
nx.shell_layouot() 布局
pos=nx.circular_layout(G) # 生成圆形节点布局 pos=nx.random_layout(G) # 生成随机节点布局 pos=nx.shell_layout(G) # 生成同心圆节点布局 pos=nx.spring_layout(G) # 利用Fruchterman-Reingold force-directed算法生成节点布局 pos=nx.spectral_layout(G) # 利用图拉普拉斯特征向量生成节点布局 pos=nx.kamada_kawai_layout(G) #使用Kamada-Kawai路径长度代价函数生成布局
连通分量
import networkx as nx import matplotlib.pyplot as plt import numpy as np probability = [] num_ = [] size_of_max = [] for p in np.arange(0.1, 1, 0.1): p = round(p, 1) probability.append(p) ER = nx.random_graphs.erdos_renyi_graph(n=10, p=p) num = nx.number_connected_components(ER) print(f"Number of connected components of ER graph with p = {p}: {num}") num_.append(int(num)) max_components = max(nx.connected_components(ER), key=len) size_of_max.append(len(max_components)) print(f"The size of largest connected component of ER graph with p = {p}: {len(max_components)}") print() nx.draw(ER, with_labels = True) plt.savefig(f'ER_{p}.jpg') plt.clf() plt.plot(probability, num_) plt.xlabel('p') plt.ylabel('Number of connected components') plt.savefig(f"Num_of_connected_components.jpg") plt.clf() plt.plot(probability, size_of_max) plt.xlabel('p') plt.ylabel('The size of largest connected component') plt.savefig(f"Size_of_largest_connected_components.jpg")
更多推荐
已为社区贡献25条内容
所有评论(0)