I use a trick to draw a colorbar whose height matches the master axes. The code is like
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
import numpy as np
ax = plt.subplot(111)
im = ax.imshow(np.arange(100).reshape((10,10)))
# create an axes on the right side of ax. The width of cax will be 5%
# of ax and the padding between cax and ax will be fixed at 0.05 inch.
divider = make_axes_locatable(ax)
cax = divider.append_axes("right", size="5%", pad=0.05)
plt.colorbar(im, cax=cax)
This trick works good. However, since a new axis is appended, the current instance of the figure becomes cax - the appended axis. As a result, if one performs operations like
plt.text(0,0,'whatever')
the text will be drawn on cax
instead of ax
- the axis to which im
belongs.
Meanwhile, gcf().axes
shows both axes.
My question is: How to make the current axis instance (returned by gca()
) the original axis to which im
belongs.
Use plt.sca(ax)
to set the current axes, where ax
is the Axes
object you'd like to become active.