Networkx is a graph theory and complex network modeling tool developed in Python language, which is built with commonly used graphs and complex network analysis algorithms , which can facilitate complex network data analysis and simulation modeling. NETWORKX supports the creation of simple, forward-and multi-graph (multigraph), built-in many standard graph theory algorithms, nodes can be arbitrary data, support arbitrary boundary value dimension, feature-rich, easy to use.
Introducing Modules
Import Networkx as NX Print NX
Graph without direction
Example 1:
#!-*-coding:utf8-*- ImportNetworkx as NXImportMatplotlib.pyplot as PLTG= NX. Graph ()#Create an empty graph GG.add_node (1)#Add a Node 1G.add_edge (2,3)#Add an edge 2-3 (implicitly adding two nodes 2, 3)G.add_edge (3,2)#for a graph without direction, Edge 3-2 and Edge 2-3 are considered to be an edgePrint "nodes:", G.nodes ()#Output ALL nodes: [1, 2, 3]Print "edges:", G.edges ()#output All edges: [(2, 3)]Print "Number of edges:", G.number_of_edges ()#number of output edges: 1Nx.draw (G) plt.savefig ("Wuxiangtu.png") plt.show ()
Output
Nodes: [1, 2, 3]edges: [(2, 3)]number of edges:1
Example 2:
#-*-coding:utf8-*- ImportNetworkx as NXImportMatplotlib.pyplot as PLTG=NX. DiGraph () G.add_node (1) G.add_node (2)#AddG.add_nodes_from ([3,4,5,6])#Add a collectionG.add_cycle ([1,2,3,4])#HoopG.add_edge (1,3) G.add_edges_from ([(3,5), (3,6), (6,7)])#Add Edge CollectionNx.draw (G) plt.savefig ("Youxiangtu.png") plt.show ()
A map of the direction
Example 1:
# !-*-coding:utf8-*- Import Networkx as NX Import = NX. DiGraph () G.add_node (1) G.add_node (2) g.add_nodes_from ([3,4,5,6]) g.add_cycle ([ 1,2,3,4]) G.add_edge (1,3) g.add_edges_from ([(3,5), (3,6), (6,7)]) Nx.draw (G) Plt.savefig ( "youxiangtu.png") plt.show ()
Note : The graph and the graph can be converted to each other, using the function:
- Graph.to_undirected ()
- Graph.to_directed ()
For example, in the example, the graph is converted to an image without a direction:
# !-*-coding:utf8-*- Import Networkx as NX Import = NX. DiGraph () G.add_node (1) G.add_node (2) g.add_nodes_from ([3,4,5,6]) g.add_cycle ([ 1,2,3,4]) G.add_edge (1,3) g.add_edges_from ([(3,5), (3,6), (6,7= g.to_ undirected () Nx.draw (G) plt.savefig ("wuxiangtu.png") plt.show ()
Weighted graph
Both the graph and the graph can give the edge weight, the method used is Add_weighted_edges_from, it accepts 1 or more triples [u,v,w] as parameters, where U is the starting point, V is the end point, W is the weight.
Example 1:
#!-*-coding:utf8-*- ImportNetworkx as NXImportMatplotlib.pyplot as PLTG= NX. Graph ()#Create an empty graph GG.add_edge (2,3)#Add an edge 2-3 (implicitly adding two nodes 2, 3)G.add_weighted_edges_from ([(3, 4, 3.5), (3, 5, 7.0)])#for a graph without direction, Edge 3-2 and Edge 2-3 are considered to be an edgePrintG.get_edge_data (2, 3)PrintG.get_edge_data (3, 4)PrintG.get_edge_data (3, 5) Nx.draw (G) plt.savefig ("Wuxiangtu.png") plt.show ()
Output
{}{'weight': 3.5}{'weight': 7.0}
Algorithm calculation of classical graph theory
Calculation 1: The shortest path between any two points of a non-graph
# -*-coding:cp936-*- Import Networkx as NX Import # calculation 1: The shortest path between any two points of the non-graph is G = NX. Graph () G.add_edges_from ([(), (1,3), (1,4), (1,5), (4,5), (4,6), (5,6= nx.all_pairs_shortest_ Path (G)print path[1]
Python Complex network Analysis library Networkx