Download our e-book of Introduction To Python

Matplotlib - Subplot2grid() FunctionDiscuss Microsoft Cognitive ToolkitMatplotlib - Working with ImagesMatplotlib - PyLab moduleMatplotlib - Working With TextMatplotlib - Setting Ticks and Tick LabelsCNTK - Creating First Neural NetworkMatplotlib - MultiplotsMatplotlib - Quiver PlotPython - Chunks and Chinks View More

How can I write Python code to change a date string from "mm/dd/yy hh: mm" format to "YYYY-MM-DD HH: mm" format? Which sorting technique is used by sort() and sorted() functions of python? How to use Enum in python? Can you please help me with this error? I was just selecting some random columns from the diabetes dataset of sklearn. Decision tree is a classification algo...How can it be applied to load diabetes dataset which has DV continuous Objects in Python are mutable or immutable? How can unclassified data in a dataset be effectively managed when utilizing a decision tree-based classification model in Python? How to leave/exit/deactivate a Python virtualenvironment Join Discussion

Neha Kumawat

3 years ago

- Graph

- Display graph vertices

- Display graph edges

- Adding a vertex
- Adding an edge

A graph is a pictorial representation of a set of objects where some pairs of objects are connected by links. The points refer to the interconnected objects termed as vertices, and edges are the links that connect the vertices.
The various terms and functionalities associated with a graph are described in our tutorial here. In this chapter, we are going to learn how to create a graph using the Python program and add various data elements to it. The following are the basic operations we perform on graphs.

**Display graph vertices****Display graph edges****Add a vertex****Add an edge****Creating a graph**

Using the python dictionary data types a graph can be easily presented. Vertices are represented as the keys of the dictionary and the connection between the vertices also called edges as the values in the dictionary.

Take a look at the following graph −

In the above graph

We can present this graph in a python program as below.

```
# Create the dictionary with graph elements
graph = { "a" : ["b","c"],
"b" : ["a", "d"],
"c" : ["a", "d"],
"d" : ["e"],
"e" : ["d"]
}
# Print the graph
print(graph)
```

When the above code is executed, it produces the following **result **−

`{'c': ['a', 'd'], 'a': ['b', 'c'], 'e': ['d'], 'd': ['e'], 'b': ['a', 'd']}`

To display the graph vertices we simply find the keys of the graph dictionary. We use the keys() method.

```
class graph:
def __init__(self,gdict=none):
if gdict is none:
gdict = []
self.gdict = gdict
# Get the keys of the dictionary
def getVertices(self):
return list(self.gdict.keys())
# Create the dictionary with graph elements
graph_elements = { "a" : ["b","c"],
"b" : ["a", "d"],
"c" : ["a", "d"],
"d" : ["e"],
"e" : ["d"]
}
g = graph(graph_elements)
print(g.getVertices())
```

When the above code is executed, it produces the following **result **−

`['d', 'b', 'e', 'c', 'a']`

Finding the graph edges is a little tricker than the vertices as we have to find each of the pairs of vertices which have an edge in between them.
So we create an empty list of edges then iterate through the edge values associated with each of the vertices. A list is formed containing a distinct group of edges found from the vertices.

```
class graph:
def __init__(self,gdict=none):
if gdict is none:
gdict = {}
self.gdict = gdict
def edges(self):
return self.findedges()
# Find the distinct list of edges
def findedges(self):
edgename = []
for vrtx in self.gdict:
for nxtvrtx in self.gdict[vrtx]:
if {nxtvrtx, vrtx} not in edgename:
edgename.append({vrtx, nxtvrtx})
return edgename
# Create the dictionary with graph elements
graph_elements = { "a" : ["b","c"],
"b" : ["a", "d"],
"c" : ["a", "d"],
"d" : ["e"],
"e" : ["d"]
}
g = graph(graph_elements)
print(g.edges())
```

When the above code is executed, it produces the following result −

`[{'b', 'a'}, {'b', 'd'}, {'e', 'd'}, {'a', 'c'}, {'c', 'd'}]`

Adding a vertex is straight forward where we add another additional key to the graph dictionary.

```
class graph:
def __init__(self,gdict=none):
if gdict is none:
gdict = {}
self.gdict = gdict
def getVertices(self):
return list(self.gdict.keys())
# Add the vertex as a key
def addVertex(self, vrtx):
if vrtx not in self.gdict:
self.gdict[vrtx] = []
# Create the dictionary with graph elements
graph_elements = { "a" : ["b","c"],
"b" : ["a", "d"],
"c" : ["a", "d"],
"d" : ["e"],
"e" : ["d"]
}
g = graph(graph_elements)
g.addVertex("f")
print(g.getVertices())
```

When the above code is executed, it produces the following **result **−

`['f', 'e', 'b', 'a', 'c','d']`

Adding an edge to an existing graph involves treating the new vertex as a tuple and validating if the edge is already present.
If not then the edge is added.

```
class graph:
def __init__(self,gdict=none):
if gdict is none:
gdict = {}
self.gdict = gdict
def edges(self):
return self.findedges()
# Add the new edge
def AddEdge(self, edge):
edge = set(edge)
(vrtx1, vrtx2) = tuple(edge)
if vrtx1 in self.gdict:
self.gdict[vrtx1].append(vrtx2)
else:
self.gdict[vrtx1] = [vrtx2]
# List the edge names
def findedges(self):
edgename = []
for vrtx in self.gdict:
for nxtvrtx in self.gdict[vrtx]:
if {nxtvrtx, vrtx} not in edgename:
edgename.append({vrtx, nxtvrtx})
return edgename
# Create the dictionary with graph elements
graph_elements = { "a" : ["b","c"],
"b" : ["a", "d"],
"c" : ["a", "d"],
"d" : ["e"],
"e" : ["d"]
}
g = graph(graph_elements)
g.AddEdge({'a','e'})
g.AddEdge({'a','c'})
print(g.edges())
```

When the above code is executed, it produces the following **result **−

`[{'e', 'd'}, {'b', 'a'}, {'b', 'd'}, {'a', 'c'}, {'a', 'e'}, {'c', 'd'}]`

I hope you enjoyed reading this article and finally, you came
to know about **Python - Graphs.**

To know more about python programming language follow the insideaiml youtube channel.

For more such blogs/courses on data science, machine
learning, artificial intelligence and emerging new technologies do visit us at InsideAIML.

Thanks for reading…

Happy Learning…