Problem
When colorbar autocreates an Axes, one can pass location, which also sets the colorbar's orientation and the ticklocation (left for a left colorbar, right for a right colorbar, etc.). When one instead passes a manually created Axes (e.g. using inset_axes, as suggested by the colorbar_placement.py example), the location kwarg is not accepted (because things are directly passed to the Colorbar class); one needs to explicitly set orientation and ticklocation (the latter is not even documented by Figure.colorbar):
from pylab import *
sfs = figure(layout="constrained").subfigures(1, 2)
ax = sfs[0].add_subplot()
im = ax.imshow([[0, 1], [2, 3]])
ax.figure.colorbar(im, location="top")
ax = sfs[1].add_subplot()
im = ax.imshow([[0, 1], [2, 3]])
ax.figure.colorbar(im, cax=ax.inset_axes([0, 1.05, 1, 0.05]),
orientation="horizontal", ticklocation="top")
show()
Proposed solution
Add a location kwarg to the Colorbar constructor which sets both orientation and ticklocation, and is mutually exclusive with them.
... or at least better document the workaround.
Problem
When colorbar autocreates an Axes, one can pass
location, which also sets the colorbar's orientation and the ticklocation (left for a left colorbar, right for a right colorbar, etc.). When one instead passes a manually created Axes (e.g. using inset_axes, as suggested by the colorbar_placement.py example), thelocationkwarg is not accepted (because things are directly passed to the Colorbar class); one needs to explicitly setorientationandticklocation(the latter is not even documented byFigure.colorbar):Proposed solution
Add a
locationkwarg to the Colorbar constructor which sets bothorientationandticklocation, and is mutually exclusive with them.... or at least better document the workaround.