You can force the aspect-ratio of the axes to be one via
ax.set_aspect('equal')
and re-size the figure to what ever dimension (in inches) you want
fig.set_size_inches([height, width],forward=True)
You can use
art.get_window_extent()
to get the size of any artist in display units, you can use this to programatically re-size things.
How else should mpl add in the colorbar?