概述

NetworkX 主要用于创造、操作复杂网络,以及学习复杂网络的结构、动力学及其功能。用于分析网络结构,建立网络模型,设计新的网络算法,绘制网络等等。安装networkx看以参见官网

学习参考

关于networkx的学习可以参考如下网站:

  1. python复杂网络库networkx:基础
  2. 网络分析之networkx
  3. python networkx学习

案例学习

学习案例前,请先导入下面的库

  1. import networkx as nx
  2. import matplotlib.pyplot as plt

案例1

  1. G = nx.Graph()
  2. G.add_node(1)
  3. G.add_edge(2, 3)
  4. # G.add_edge(3, 2)
  5. print("输出全部节点:{}".format(G.nodes()))
  6. print("输出全部边:{}".format(G.edges()))
  7. print("输出全部边的数量:{}".format(G.number_of_edges()))
  8. nx.draw(G)
  9. plt.show()
  1. 输出全部节点:[1, 2, 3]
  2. 输出全部边:[(2, 3)]
  3. 输出全部边的数量:1

Networkx实例探讨 - 图1

案例2

  1. G = nx.DiGraph()
  2. G.add_node(1)
  3. G.add_node(2)
  4. G.add_nodes_from([3, 4, 5, 6])
  5. G.add_cycle([1, 2, 3, 4])
  6. G.add_edge(1, 3)
  7. G.add_edges_from([(3, 5), (3, 6), (6, 7)])
  8. print("输出全部节点:{}".format(G.nodes()))
  9. print("输出全部边:{}".format(G.edges()))
  10. print("输出全部边的数量:{}".format(G.number_of_edges()))
  11. nx.draw(G)
  12. plt.show()
  1. 输出全部节点:[1, 2, 3, 4, 5, 6, 7]
  2. 输出全部边:[(1, 2), (1, 3), (2, 3), (3, 4), (3, 5), (3, 6), (4, 1), (6, 7)]
  3. 输出全部边的数量:8

Networkx实例探讨 - 图2

案例3

  1. G = nx.cubical_graph()
  2. plt.subplot(121)
  3. nx.draw(G)
  4. plt.subplot(122)
  5. nx.draw(G, pos=nx.circular_layout(G), nodecolor='r', edge_color='b')
  6. plt.show()

Networkx实例探讨 - 图3

案例4

  1. G = nx.path_graph(8)
  2. nx.draw(G)
  3. plt.show()

Networkx实例探讨 - 图4

案例5

  1. G = nx.cycle_graph(24)
  2. pos = nx.spring_layout(G, iterations=200)
  3. nx.draw(G, pos, node_color=range(24), node_size=800, cmap=plt.cm.Blues)
  4. plt.show()

Networkx实例探讨 - 图5

案例6

  1. G = nx.petersen_graph()
  2. plt.subplot(121)
  3. nx.draw(G, with_labels=True, font_weight='bold')
  4. plt.subplot(122)
  5. nx.draw_shell(G, nlist=[range(5, 10), range(5)], with_labels=True, font_weight='bold')
  6. plt.show()

Networkx实例探讨 - 图6