Python NetworkX

Python NetworkXnetworkx是一个python包,用于创建、操作和研究复杂网络的结构、动态和功能使用NetworkX,您可以以标准和非标准数据格式加载和存储网络,生成多种类型的随机和经典网络,分析网络结构,构建网络模型,设计新的网络算法,绘制网络,https://networkx.org/documentation/stable/auto_examples/index.html………………

networkx是一个python包,用于创建、操作和研究复杂网络的结构、动态和功能

使用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()

Python NetworkX

 如果nx.draw不带with_labels=True

Python NetworkX

 添加边

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()

Python NetworkX

添加边带权重

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")

今天的文章Python NetworkX分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/9597.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注