3.2 KiB
For creating and working with graphs (networks) in Python, NetworkX stands out as a highly useful library. It provides tools for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks. With NetworkX, you can load and store networks in standard and nonstandard data formats, generate many types of random and classic networks, analyze network structure, build network models, design new network algorithms, draw networks, and much more. Here’s a concise reference guide for common use cases with NetworkX:
NetworkX Reference Guide
Installation
pip install networkx
Basic Usage
Importing NetworkX
import networkx as nx
Creating Graphs
# Create an empty graph
G = nx.Graph()
# Create a directed graph
D = nx.DiGraph()
# Create a multi-graph (multiple edges between same two nodes)
M = nx.MultiGraph()
# Create a multi-directed graph
MD = nx.MultiDiGraph()
Adding Nodes and Edges
# Add a single node
G.add_node(1)
# Add multiple nodes
G.add_nodes_from([2, 3, 4, 5])
# Add an edge (also adds nodes if they don't exist)
G.add_edge(1, 2)
# Add multiple edges (also adds nodes if they don't exist)
G.add_edges_from([(1, 2), (1, 3), (3, 4)])
Graph Properties
# Number of nodes
num_nodes = G.number_of_nodes()
# Number of edges
num_edges = G.number_of_edges()
# Neighbors of a node
neighbors = list(G.neighbors(1))
# Degree of a node
degree = G.degree(1)
Accessing Edges and Nodes
# Access edge attributes
G.edges[1, 2]['attribute_name'] = 'value'
# Access node attributes
G.nodes[1]['attribute_name'] = 'value'
Analyzing Graphs
Pathfinding
# Shortest path
path = nx.shortest_path(G, source=1, target=4)
# Shortest path length
path_length = nx.shortest_path_length(G, source=1, target=4)
Centrality Measures
# Degree centrality
degree_centrality = nx.degree_centrality(G)
# Betweenness centrality
betweenness = nx.betweenness_centrality(G)
# Closeness centrality
closeness = nx.closeness_centrality(G)
Community Detection
# Using the Clauset-Newman-Moore greedy modularity maximization
from networkx.algorithms.community import greedy_modularity_communities
communities = list(greedy_modularity_communities(G))
Visualizing Graphs
import matplotlib.pyplot as plt
# Simple graph drawing
nx.draw(G, with_labels=True)
plt.show()
# Drawing with layout
pos = nx.spring_layout(G)
nx.draw(G, pos, with_labels=True, node_color='skyblue', edge_color='gray')
plt.show()
NetworkX is incredibly versatile for handling and analyzing complex networks. It supports numerous types of networks and graphs, including social networks, word co-occurrence networks, and many others. This guide covers foundational operations, but NetworkX's capabilities are extensive, supporting advanced graph theory and network analysis methods that can be tailored to specific projects or research needs.
NetworkX's comprehensive set of features and algorithms, combined with its integration with Python's scientific computing ecosystem (like NumPy, SciPy, and Matplotlib), makes it an invaluable tool for researchers and practitioners working in data science, network analysis, and beyond.