NetworkX is a python library for network/graph analysis. In the real world, the great example usage for network analysis is social network analysis (SNA), which is used for describing the relationship between peoples. Python is widely used for scientific and analysis purposes because there are so many packages that made for it, such as numpy
, pandas
, scikit-learn
, and for the specific field like network analysis, they have networkx
. I will show you how to get started with it and view the created graph using the matplotlib
package.
Prerequisites to code along
You have installed python on your machine, and could use the pip
to install these packages:
pip install --user networkx
pip install --user matplotlib
or if you follow my previous posts about installing python using pyenv
and installing packages using pipenv
, you are welcome to use these commands because I prefer this way:
pipenv install networkx
pipenv install matplotlib
Preparation
Let's create two files within a folder for the simple demonstration project, the files are test.py
and miserables.json
. The miserables.json
file contains graph data which you can get it from here.
- project
|_ test.py
|_ miserables.json
Coding
Now, let's code the test.py
Importing the packages
We will be using networkx
, matplotlib
, and built-in package json
since we will deal with a JSON file.
import json
import networkx as nx
import matplotlib.pyplot as plt
Loading data from json file
We use the json
package to load the JSON file content and convert it into a dictionary object.
miserables_graph = None
with open('miserables.json') as json_file:
miserables_graph = json.load(json_file)
Creating a networkx graph
Then we create a networkx graph object or instance and add the nodes and edges from the previously imported dictionary object.
G = nx.Graph()
G.add_nodes_from([(node['id'] for node in miserables_graph['nodes'])])
G.add_edges_from([(edge['source'], edge['target'])
for edge in miserables_graph['links']])
Drawing the graph
And finally, show the graph using matplotlib
.
nx.draw(G)
plt.show()
You can run the test.py
file using python test.py
or pipenv run python test.py
if you're using pipenv
. When you run it, there will be a program instance spawn on your desktop.
You may find out the graph drawing is kind off and ugly 😆 I will find how to prettify it later but have fun exploring it yourself.
Top comments (1)
Hi,
Thankyou for the code.
But when I add convexity in the code, where convexity is string, I got the following error:
File :1, in
NameError: name 'convex' is not defined
This is my code :
G.add_edges_from([(int(edge['source']), int(edge['target']),eval(edge['convexity']))
for edge in miserables_graph['links']])
Please do suggest me to solve my error