NextworkX Python Overview
The Python NetworkX module contains tools for creating and manipulating, visualising networks, also known as graphs. This is not only a graph drawing package, but also collaborate with Matplotlib. By using this, we can implement a highly flexible graph.
A graph is defined as a set of nodes and edges where each edge is associated with two nodes. NetworkX also adds the possibility to associate properties to each node and edge. The Networkx module is designed to handle data on a large scale relevant to modern problems. It has several classes for graphs and digraphs. It also has features to convert a graph from one format to several others.
Python install NetworkX
The NetworkX can be installed using pip, Miniconda/Anaconda and from the source code. Here, we have installed using the pip tool.
pip install networkx
As this module is already installed in the system, that's why it returns the following-
Requirement already satisfied: networkx in c:\python37\scripts\projects\env\lib\site-packages (2.4)
Requirement already satisfied: decorator>=4.3.0 in c:\python37\scripts\projects\env\lib\site-packages (from networkx) (4.4.1)
Import NetworkX
First, we import the networkx module.
import networkx as nx
Create graph object
This module provides different classes for different networks, like directed and undirected networks. Let's create a basic undirected graph object -
g = nx.Graph()
Adding or Removing Nodes
We can use add_node() method to add one graph node at a time or use add_nodes_from() method to add a list of nodes or a container of nodes.
# Add one node at a time
g.add_node(1)
# Add a list of nodes
g.add_nodes_from([2, 3, 4])
# container of nodes
cn = nx.path_graph(5)
g.add_nodes_from(cn)
To remove a node from the graph, simply use remove_node() method and pass the node.
g.remove_node(2)
Adding and Removing Edges
The add_edge() and add_edges_from() methods are used to add single edges, lists of edges, or containers of edges, respectively.
# Add single edge at a time
g.add_edge(1, 2)
# Add a list of edges
g.add_edges_from([(1,2), (1,3)])
To remove the edge from the graph, simply use remove_edge() method and pass the edge.
g.remove_edge(1,2)
Simple Example
import matplotlib.pyplot as plt
import networkx as nx
g = nx.Graph()
fig = plt.figure(figsize =(5, 11))
g.add_edges_from([(1, 2), (1, 3), (1,4), (2, 3), (2, 4), (2, 5), (3, 4),
(4, 5), (4, 6), (5, 7), (5, 8), (7, 8)])
# original Graph created
plt.subplot(211)
nx.draw(g)
plt.show()
plt.savefig('graph.png')
The above code returns the following output -
Accessing Nodes and Edges
This module provides several methods to access the nodes and edges, number of nodes and edges and so on.
import matplotlib.pyplot as plt
import networkx as nx
g = nx.Graph()
g.add_edges_from([(1, 2), (1, 3), (1,4), (2, 3), (2, 4), (2, 5), (3, 4),
(4, 5), (4, 6), (5, 7), (5, 8), (7, 8)])
print(g.nodes())
print(g.edges())
print(g.degree(2))
print(g.number_of_nodes())
print(g.number_of_edges())
Convert to Directed Graph
The above generated graph is an undirected graph, but we can also convert it to a directed graph. To convert to a directed graph, use to_directed() method. It returns the directed representation of the graph.
import matplotlib.pyplot as plt
import networkx as nx
g = nx.Graph()
fig = plt.figure(figsize =(5, 11))
g.add_edges_from([(1, 2), (1, 3), (1,4), (2, 3), (2, 4), (2, 5), (3, 4),
(4, 5), (4, 6), (5, 7), (5, 8), (7, 8)])
# Directed Graph created
plt.subplot(211)
H = nx.to_directed(g)
nx.draw(H)
plt.show()
plt.savefig('graph.png')
Similarly, we can convert a directed graph to undirected graph using to_undirected() method.
Related Articles
How to save figure in matplotlib pyplotPython Line Plot Using Matplotlib
Matplotlib Pie Chart
Python Matplotlib Bar Plot
How to capture a video in Python OpenCV and save
Python OpenCV Overlaying or Blending Two Images
Contour Detection using Python OpenCV
Harris Corner Detection using Python OpenCV
Detect human body in image OpenCV
Face Recognition OpenCV Source Code
Canny Edge Detector OpenCV Python
Python NumPy: Overview and Examples
Image processing using Python Pillow
Python OpenCV Histogram Equalization
Convert Python list to numpy array
Convert string to list Python
Python program to list even and odd numbers of a list
Python loop through list
Sort list in descending order Python