python复杂网络 学习笔记

x33g5p2x  于2022-02-07 转载在 Python  
字(1.3k)|赞(0)|评价(0)|浏览(326)

networkx库

pip install --upgrade networkx

点和边示例:

  1. import networkx as nx
  2. import matplotlib.pyplot as plt
  3. G = nx.Graph() #初始化一个图
  4. G.add_node('a')
  5. G.add_node('b')
  6. G.add_node('c')
  7. G.add_node('d')
  8. G.add_node('e')
  9. G.add_edge('a','b') #连接a、b得到ab边
  10. G.add_edge('a','d')
  11. G.add_edge('a','e')
  12. G.add_edge('a','c')
  13. nx.draw(G,with_labels=True)
  14. plt.show()

规则图:

  1. import networkx as nx
  2. import matplotlib.pyplot as plt
  3. RG = nx.random_graphs.random_regular_graph(3,20) #生成包含20个节点、每个节点有3个邻居的规则图RG
  4. pos = nx.spectral_layout(RG) #定义一个布局,此处采用了spectral布局方式,后变还会介绍其它布局方式,注意图形上的区别
  5. nx.draw(RG,pos,with_labels=False,node_size = 30) #绘制规则图的图形,with_labels决定节点是非带标签(编号),node_size是节点的直径
  6. plt.show() #显示图形

无向图示例:

  1. import networkx as nx
  2. import matplotlib.pyplot as plt
  3. # BA scale-free degree network
  4. # generalize BA network which has 20 nodes, m = 1
  5. BA = nx.random_graphs.barabasi_albert_graph(20, 1)
  6. # spring layout
  7. pos = nx.spring_layout(BA)
  8. nx.draw(BA, pos, with_labels = False, node_size = 30)
  9. plt.show()

  1. # 导入相关依赖
  2. from matplotlib import pyplot as plt
  3. import networkx as nx
  4. import numpy as np
  5. # 生成随机数据
  6. G = nx.erdos_renyi_graph(50,0.5)
  7. # 指定画布大小
  8. plt.figure(figsize=(18,18))
  9. # 生成新的图
  10. G_new = nx.Graph()
  11. # 依据图中边的数量,生成同样长度的随机权重值
  12. weightList = {}
  13. for i in range(len(G.edges())+1):
  14. weightList[i] = np.random.rand()
  15. # 将生成的随机权重复制给G_new图
  16. i = 0
  17. for edge in G.edges():
  18. i += 1
  19. G_new.add_edges_from([(edge[0], edge[1], {'weight': weightList[i]})])
  20. # 绘制G_new图
  21. nx.draw_networkx(G_new)
  22. plt.show()

相关文章