Open In App

Matplotlib.pyplot.subplot2grid() in python

Last Updated : 19 Apr, 2020
Like Article

Matplotlib is an amazing visualization library in Python for 2D plots of arrays. Matplotlib is a multi-platform data visualization library built on NumPy arrays and designed to work with the broader SciPy stack.


The Matplotlib.pyplot.subplot2grid() function give additional flexibility in creating axes object at a specified location inside a grid. It also helps in spanning the axes object across multiple rows or columns. In simpler words, this function is used to create multiple charts within the same figure. It is a sub-figure layout manager.

Syntax : Plt.subplot2grid(shape, location, rowspan, colspan)

Parameters :

  • shape: As the name suggests it is used to define the shape of the grid to be plotted within the graph. It is a required argument and is generally passed in as a list or tuple of two numbers which are responsible for the layout of the grid with the first number being the number of rows and the second number as the number of columns.
  • location (loc): This is the second mandatory argument that this function takes. Similar to the shape argument it is also a required argument and is generally passed in as a list or tuple of two numbers. It is used for specifying the row and column number to place the sub-plot. It is also important to note that the indexes start from 0. So (0, 0) would be the cell in the first row and the first column of the grid.
  • rowspan: Once the grid layout is set and the starting index is decided using location(loc) one can expand the selection to take up more rows with this argument. This is an optional parameter and has a default value of 1.
  • colspan: Similar to rowspan it is used to expand the selection to take up more columns. It is also an optional parameter with default value of 1.

Example 1:

import matplotlib.pyplot as plt
fig = plt.figure()
axes1 = plt.subplot2grid((4, 4), (0, 0),
                         colspan = 4)
axes2 = plt.subplot2grid((4, 4), (1, 0),
                         colspan = 3)
axes3 = plt.subplot2grid((4, 4), (1, 2), 
                         rowspan = 3)
axes4 = plt.subplot2grid((4, 4), (2, 0))
axes5 = plt.subplot2grid((4, 4), (2, 1))

Output :

Example 2:

import random
import matplotlib.pyplot as plt
from matplotlib import style
fig = plt.figure()
# helper function to plot the lines
def helper():
    xs = []
    ys = []
    for i in range(10):
        x = i
        y = random.randrange(10)
    return xs, ys
axes1 = plt.subplot2grid ((7, 1), (0, 0),
                          rowspan = 2
                          colspan = 1)
axes2 = plt.subplot2grid ((7, 1), (2, 0),
                          rowspan = 2,
                          colspan = 1)
axes3 = plt.subplot2grid ((7, 1), (4, 0), 
                          rowspan = 2
                          colspan = 1)
x, y = helper()
axes1.plot(x, y)
x, y = helper()
axes2.plot(x, y)
x, y = helper()
axes3.plot(x, y)


Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads