Is there a way to make local titles using subplot2grid in Python

matplotlib, python, subplot

Solution

You can add titles to each sub plot using the set_title() method of the axes. Each title will still be display above the axis. If you want text below the axis, you could use set_xlabel. For example:

import pylab as plt
ax1 = plt.subplot2grid((3,3), (0,0), colspan=3)
ax2 = plt.subplot2grid((3,3), (1,0), colspan=2)
ax3 = plt.subplot2grid((3,3), (1, 2), rowspan=2)
ax4 = plt.subplot2grid((3,3), (2, 0))
ax5 = plt.subplot2grid((3,3), (2, 1))

# add titles to subplots
ax2.set_title('plot 2')
ax3.set_title('plot 3')

# add x-label to subplot
ax1.set_xlabel('plot 1 x-label')

# add y-label to subplot
ax1.set_ylabel('y-label')

plt.tight_layout()
plt.show()

You can also use figtext to add a new title like this:

# add Text
pos = ax1.get_position()
x = pos.x0 + 0.35
y = pos.y0
plt.figtext(x,y,'new title')
plt.tight_layout()
plt.show()

Problem

I'm using suplot2grid like in the example in the matplotlib page: ``` ax1 = plt.subplot2grid((3,3), (0,0), colspan=3) ax2 = plt.subplot2grid((3,3), (1,0), colspan=2) ax3 = plt.subplot2grid((3,3), (1, 2), rowspan=2) ax4 = plt.subplot2grid((3,3), (2, 0)) ax5 = plt.subplot2grid((3,3), (2, 1)) plt.suptitle("subplot2grid") ``` Is there a way to make a local subtitle below ax1, instead of the global one on top of it? Thanks

Original source